Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.4
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:Historia Wikibooks
4
78
544616
544014
2026-05-29T13:17:38Z
Persino
2851
544616
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Historia Wikibooks}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
== Historia Wikibooks ==
=== 4 września 2010 ===
Wikibooks przekroczyły liczbę 5 000 modułów.
=== 31 marzec 2010 ===
Przekroczyliśmy liczbę 4 700 modułów i zbliżamy się do liczby 4 800 modułów.
=== 28 marzec 2010 ===
Wikibooks zostały zaprezentowane na konferencji {{lg|Konferencja Wikimedia Polska 2010|Wikimedia Polska 2010|k=wmpl}}.
=== 24 stycznia 2010 ===
Obchodzimy szóste urodziny Wikibooks! Szczegóły na stronie {{lr|6. urodziny polskich Wikibooks}}.
=== 1 grudzień 2009 ===
Rozpoczęliśmy akcję "{{lr|Sprzątanie Wikibooks}}".
=== 24 czerwca 2007 ===
Dzisiaj przekroczyliśmy magiczną barierę 50 tysięcy edycji na polskim projekcie Wikibooks.
=== 29 sierpnia 2006 ===
Dzięki owocnej współpracy użytkowników Wikibooks powstała nowa szata graficzna {{lg|_|strony głównej}}.
===16 sierpnia 2006===
Posiadamy już 5000 stron.
=== 11 sierpnia 2006 ===
Na Wikibooks mamy już 1 000 zarejestrowanych użytkowników.
=== 1 lipca 2006 ===
Przekroczyliśmy 25 000 edycji!
Powstała pierwsza wersja PDF podręcznika - jest to {{lf|Organiczna.pdf|PDF}} podręcznika {{lg|Organiczna technika studiowania/Okładka|Organiczna technika studiowania}}.
=== 2 marca 2006 ===
Mamy 1 000 modułów! Tysięcznym modułem okazał się {{lg|Linux/Definicje/Terminal}}, który został napisany przez użytkownika {{lż|CzarnyZajaczek}} (weterana, który akurat wrócił na projekt ;-). Jesteśmy szóstą edycją Wikibooks, która przekroczyła tę barierę.
=== 9 grudnia 2005 ===
[[OGRE/Wersja do druku]] jest pierwszą wersją podręcznika specjalnie przystosowaną do druku.
=== 7 grudnia 2005 ===
Zostaliśmy w końcu zauważeni w mediach - owocem tego jest artykuł ''{{lz|s=http://di.com.pl/news/12168,1.html|n=Książki na licencji Open Source}}'' w serwisie {{lz|s=http://www.di.com.pl/|n=Dziennik Internautów}}. Pretekstem do napisania artykułu o Wikibooks było przekroczenie przez nasz serwis 10 000 edycji - fakt, który przeoczyli właściwie wszyscy uczestnicy projektu ;-)
=== 9 października 2005 ===
Mamy już 500 modułów (według automatycznych szacunków)!
=== 1 października 2005 ===
Pierwszy zwycięzca konkursu na Nowy podręcznik miesiąca - podręcznik biblioteki 3D {{lg|OGRE}}.
=== 7 września 2005 ===
Zmiana wyglądu strony głównej na nowocześniejszy.
=== 4 września 2005 ===
Powstaje {{lr|Portal użytkowników}}
=== 25 lipca 2004 ===
Powstaje lokalna Strona główna.
=== 23 lipca 2004 ===
Uruchomienie osobnego wiki dla polskich Wikibooks, prawdopodobnie pierwszą stroną jest strona użytkownika Reytana.
=== 10 maja 2004 ===
Pierwsza książka: {{lg|Programowanie komputerów}} (jeszcze jako część anglojęzycznych Wikibooks)
=== 24 stycznia 2004 ===
Przetłumaczenie strony głównej, przed nami jeszcze wiele pracy! {{lż|Reytan}} {{Small|(ojciec-założyciel ;-)}}
==Stare, nieaktualizowane już statystyki==
===2004===
{{Tabelka|opcje=border="1" cellspacing="0" cellpadding="0"|<!--
-->{{Wiersz|opcje=align="center" valign="middle">|<!--
-->{{Komórka|{{Div|atrybuty=align="center"|'''Miesiąc'''}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|'''Wikipedyści'''}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|'''Moduły'''}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|'''Modułów/{{Br}}Wikipedystę'''}}}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|1 września}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|16}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|32}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|'''2'''}}}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|{{P|1 października}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|28}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|39}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|'''1,4'''}}}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|1 listopada}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|37}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|84}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|'''2,3'''}}}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|1 grudnia}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|58}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|160}}}}<!--
-->{{Komórka|{{Div|atrybuty=align="center"|'''2,76''''}}}}<!--
-->}}}}
==== Podsumowanie roku 2004 ====
Pierwszy rok polskiej Wikibooks zakończono z '''174 modułami''' w '''22 rozpoczętych podręcznikach''' utworzonych przy współpracy '''70 zarejestrowanych''' i wielu niezarejestrowanych wolontariuszy. Statystycznie każdy z zarejestrowanych użytkowników utworzył '''2,5 modułu''' w tym roku. (północ z 31.XII.04 na 1.I.05, czasu polskiego)
=== 2005 ===
{{Tabelka|opcje=border="1" cellspacing="0" cellpadding="0"|styl=float: left; margin: 0 1ex;|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Miesiąc}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Wikipedyści}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Moduły}}<!--
-->{{Komórka|nagłówek=tak|align="center"|Modułów/{{Br}}Wikipedystę}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|opcje=colspan="4"|{{Small|Od stycznia do maja nie były prowadzone statystyki}}}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|15. maja}}<!--
-->{{Komórka|opcje=align="center"|146}}<!--
-->{{Komórka|opcje=align="center"|297}}<!--
-->{{Komórka|opcje=align="center"|'''2,04'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|15. czerwca}}<!--
-->{{Komórka|opcje=align="center"|176}}<!--
-->{{Komórka|opcje=align="center"|356}}<!--
-->{{Komórka|opcje=align="center"|'''2,02'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|15. lipca}}<!--
-->{{Komórka|opcje=align="center"| }}<!--
-->{{Komórka|opcje=align="center"| }}<!--
-->{{Komórka|align="center"| }}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29. sierpnia}}<!--
-->{{Komórka|opcje=align="center"|240}}<!--
-->{{Komórka|opcje=align="center"|411}}<!--
-->{{Komórka|opcje=align="center"|'''1,71'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29. września}}<!--
-->{{Komórka|opcje=align="center"|266}}<!--
-->{{Komórka|opcje=align="center"|465}}<!--
-->{{Komórka|opcje=align="center"|'''1,75'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29. października}}<!--
-->{{Komórka|opcje=align="center"|307}}<!--
-->{{Komórka|opcje=align="center"|554}}<!--
-->{{Komórka|opcje=align="center"|'''1,80'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29. listopada}}<!--
-->{{Komórka|opcje=align="center"|333}}<!--
-->{{Komórka|opcje=align="center"|619}}<!--
-->{{Komórka|opcje=align="center"|'''1,86'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|7. stycznia*}}<!--
-->{{Komórka|opcje=align="center"|397}}<!--
-->{{Komórka|opcje=align="center"|720}}<!--
-->{{Komórka|opcje=align="center"|'''1,81'''}}<!--
-->}}}}
{{Tabelka|opcje=border="1" cellspacing="0" cellpadding="0"|styl=float: left; margin: 0 1ex;|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Miesiąc}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Wikipedyści}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Admini}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Wikipedyści{{Br}}/Admina}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|opcje=colspan="4"|{{Small|Od stycznia do maja nie były prowadzone statystyki}}}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|15. maja}}<!--
-->{{Komórka|opcje=align="center"|146}}<!--
-->{{Komórka|opcje=align="center"|3}}<!--
-->{{Komórka|opcje=align="center"|'''48,6'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|15. czerwca}}<!--
-->{{Komórka|opcje=align="center"|176}}<!--
-->{{Komórka|opcje=align="center"|3}}<!--
-->{{Komórka|opcje=align="center"|'''58,6'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|15. lipca}}<!--
-->{{Komórka|opcje=align="center"| }}<!--
-->{{Komórka|opcje=align="center"| }}<!--
-->{{Komórka|opcje=align="center"| }}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29. sierpnia}}<!--
-->{{Komórka|opcje=align="center"|240}}<!--
-->{{Komórka|opcje=align="center"|3}}<!--
-->{{Komórka|opcje=align="center"|'''80,0'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29. września}}<!--
-->{{Komórka|opcje=align="center"|266}}<!--
-->{{Komórka|opcje=align="center"|3}}<!--
-->{{Komórka|opcje=align="center"|'''88,6'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29. października}}<!--
-->{{Komórka|opcje=align="center"|307}}<!--
-->{{Komórka|opcje=align="center"|4}}<!--
-->{{Komórka|opcje=align="center"|'''76,8'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29. listopada}}<!--
-->{{Komórka|opcje=align="center"|333}}<!--
-->{{Komórka|opcje=align="center"|4}}<!--
-->{{Komórka|opcje=align="center"|'''83,3'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|7. stycznia*}}<!--
-->{{Komórka|opcje=align="center"|397}}<!--
-->{{Komórka|opcje=align="center"|4}}<!--
-->{{Komórka|opcje=align="center"|'''99,3'''}}<!--
-->}}}}
{{BrClear}}
{{Small|* 7 stycznia 2006, z powodu gapiostwa administratorów statystyki nie były uaktualnione pod koniec 2005 roku}}
=== 2006 ===
{{Tabelka|opcje=border="1" cellspacing="0" cellpadding="0"|styl=float: left; margin: 0 1ex;|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Miesiąc}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Wikipedyści}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Moduły}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Modułów/{{Br}}Wikipedystę}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 stycznia}}<!--
-->{{Komórka|opcje=align="center"|445}}<!--
-->{{Komórka|opcje=align="center"|908}}<!--
-->{{Komórka|opcje=align="center"|'''2,04'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|28 lutego}}<!--
-->{{Komórka|opcje=align="center"|519}}<!--
-->{{Komórka|opcje=align="center"|988}}<!--
-->{{Komórka|opcje=align="center"|'''1,9'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 marca}}<!--
-->{{Komórka|opcje=align="center"|625}}<!--
-->{{Komórka|opcje=align="center"|1248}}<!--
-->{{Komórka|opcje=align="center"|'''2,0'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 kwietnia}}<!--
-->{{Komórka|opcje=align="center"|721}}<!--
-->{{Komórka|opcje=align="center"|1304}}<!--
-->{{Komórka|opcje=align="center"|'''1,8'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 maja}}<!--
-->{{Komórka|opcje=align="center"|824}}<!--
-->{{Komórka|opcje=align="center"|1448}}<!--
-->{{Komórka|opcje=align="center"|'''1,75'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 czerwca}}<!--
-->{{Komórka|opcje=align="center"|894}}<!--
-->{{Komórka|opcje=align="center"|1450}}<!--
-->{{Komórka|opcje=align="center"|'''1,62'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 lipca}}<!--
-->{{Komórka|opcje=align="center"|971}}<!--
-->{{Komórka|opcje=align="center"|1484}}<!--
-->{{Komórka|opcje=align="center"|'''1,53'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 sierpnia}}<!--
-->{{Komórka|opcje=align="center"|1 027}}<!--
-->{{Komórka|opcje=align="center"|1 550}}<!--
-->{{Komórka|opcje=align="center"|'''1,51'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 września}}<!--
-->{{Komórka|opcje=align="center"|1 128}}<!--
-->{{Komórka|opcje=align="center"|1 632}}<!--
-->{{Komórka|opcje=align="center"|'''1,45'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 października}}<!--
-->{{Komórka|opcje=align="center"|1 221}}<!--
-->{{Komórka|opcje=align="center"|1 703}}<!--
-->{{Komórka|opcje=align="center"|'''1,39'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|3 grudnia}}<!--
-->{{Komórka|opcje=align="center"|1 361}}<!--
-->{{Komórka|opcje=align="center"|1 730}}<!--
-->{{Komórka|opcje=align="center"|'''1,27'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 grudnia}}<!--
-->{{Komórka|opcje=align="center"|1 434}}<!--
-->{{Komórka|opcje=align="center"|1 807}}<!--
-->{{Komórka|opcje=align="center"|'''1,26'''}}<!--
-->}}}}
{{Tabelka|opcje=border="1" cellspacing="0" cellpadding="0"|styl="float: left; margin: 0 1ex;|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Miesiąc}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Wikipedyści}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Admini}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Wikipedyści{{Br}}/Admina}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 stycznia}}<!--
-->{{Komórka|opcje=align="center"|445}}<!--
-->{{Komórka|opcje=align="center"|4}}<!--
-->{{Komórka|opcje=align="center"|'''111,25'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|28 lutego}}<!--
-->{{Komórka|opcje=align="center"|519}}<!--
-->{{Komórka|opcje=align="center"|5}}<!--
-->{{Komórka|opcje=align="center"|'''103,8'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 marca}}<!--
-->{{Komórka|opcje=align="center"|625}}<!--
-->{{Komórka|opcje=align="center"|5}}<!--
-->{{Komórka|opcje=align="center"|'''125,0'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 kwietnia}}<!--
-->{{Komórka|opcje=align="center"|721}}<!--
-->{{Komórka|opcje=align="center"|5}}<!--
-->{{Komórka|opcje=align="center"|'''144,2'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 maja}}<!--
-->{{Komórka|opcje=align="center"|824}}<!--
-->{{Komórka|opcje=align="center"|5}}<!--
-->{{Komórka|opcje=align="center"|'''164,8'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 czerwca}}<!--
-->{{Komórka|opcje=align="center"|894}}<!--
-->{{Komórka|opcje=align="center"|5}}<!--
-->{{Komórka|opcje=align="center"|'''178,8'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 lipca}}<!--
-->{{Komórka|opcje=align="center"|971}}<!--
-->{{Komórka|opcje=align="center"|5}}<!--
-->{{Komórka|opcje=align="center"|'''194,2'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 sierpnia}}<!--
-->{{Komórka|opcje=align="center"|1 027}}<!--
-->{{Komórka|opcje=align="center"|5}}<!--
-->{{Komórka|opcje=align="center"|'''205,4'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 września}}<!--
-->{{Komórka|opcje=align="center"|1 128}}<!--
-->{{Komórka|opcje=align="center"|7}}<!--
-->{{Komórka|opcje=align="center"|'''161,1'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 października}}<!--
-->{{Komórka|opcje=align="center"|1 221}}<!--
-->{{Komórka|opcje=align="center"|7}}<!--
-->{{Komórka|opcje=align="center"|'''174,4'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|3 grudnia}}<!--
-->{{Komórka|opcje=align="center"|1 361}}<!--
-->{{Komórka|opcje=align="center"|7}}<!--
-->{{Komórka|opcje=align="center"|'''194,4'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|29 grudnia}}<!--
-->{{Komórka|opcje=align="center"|1 434}}<!--
-->{{Komórka|opcje=align="center"|7}}<!--
-->{{Komórka|opcje=align="center"|'''204'''}}<!--
-->}}}}
{{BrClear}}
=== 2007 ===
{{Tabelka|opcje=border="1" cellspacing="0" cellpadding="0"|styl=float: left; margin: 0 1ex;|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Miesiąc}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Wikipedyści}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Moduły}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Modułów/{{Br}}Wikipedystę}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 stycznia}}<!--
-->{{Komórka|opcje=align="center"|1 556}}<!--
-->{{Komórka|opcje=align="center"|1 790}}<!--
-->{{Komórka|opcje=align="center"|'''1,15'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|28 lutego}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 marca}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 kwietnia}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 maja}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 czerwca}}<!--
-->{{Komórka|opcje=align="center"|2040}}<!--
-->{{Komórka|opcje=align="center"|1929}}<!--
-->{{Komórka|opcje=align="center"|1.455}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 lipca}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 sierpnia}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 września}}<!--
-->{{Komórka|opcje=align="center"|2280}}<!--
-->{{Komórka|opcje=align="center"|2434}}<!--
-->{{Komórka|opcje=align="center"|1.067}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 października}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 listopada}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 grudnia}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}}}
{{Tabelka|opcje=border="1" cellspacing="0" cellpadding="0"|styl=float: left; margin: 0 1ex;|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Miesiąc}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Wikipedyści}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Admini}}<!--
-->{{Komórka|nagłówek=tak|opcje=align="center"|Wikipedyści{{Br}}/Admina}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 stycznia}}<!--
-->{{Komórka|opcje=align="center"|1 556}}<!--
-->{{Komórka|opcje=align="center"|6}}<!--
-->{{Komórka|opcje=align="center"|'''259,3'''}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|28 lutego}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 marca}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 kwietnia}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 maja}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 czerwca}}<!--
-->{{Komórka|opcje=align="center"|2040}}<!--
-->{{Komórka|opcje=align="center"|6}}<!--
-->{{Komórka|opcje=align="center"|340}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 lipca}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 sierpnia}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 września}}<!--
-->{{Komórka|opcje=align="center"|2280}}<!--
-->{{Komórka|opcje=align="center"|6}}<!--
-->{{Komórka|opcje=align="center"|380}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 października}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 listopada}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}<!--
-->{{Wiersz|<!--
-->{{Komórka|30 grudnia}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->{{Komórka|opcje=align="center"|}}<!--
-->}}}}
{{BrClear}}
== Więcej statystyk ==
* {{lz|s=http://en.wikipedia.org/wikistats/wikibooks/PL/TablesWikipediaPL.htm|n=tabelki}} i {{lz|s=http://en.wikipedia.org/wikistats/wikibooks/PL/ChartsWikipediaPL.htm|n=wykresy}}
* {{lz|s=http://en.wikipedia.org/wikistats/wikibooks/PL/Sitemap.htm|n=wszystkie statystyki Wikibooks}}
* {{lc|Statistics|Statystyki}}
* {{lmg|List_of_Wikibooks|Wikibooks Table}}
* {{lr|Statystyki}} – największe podręczniki
== Nowe podręczniki miesiąca w latach 2005 - 2006 ==
W latach 2005 - 2006 prowadzono akcję "Nowy podręcznik miesiąca". Wyróżniano w ten sposób nowe, powstające, ciekawe podręczniki. Wybierano je w drodze głosowań. Wskazano w ten sposób takie podręczniki jak: {{lg|IRC/Okładka|IRC}}, {{lg|Organiczna technika studiowania/Okładka|Organiczna technika studiowania}}, {{lg|Ekoogrodnictwo}}, {{lg|Szachy/Okładka|Szachy}}, {{lg|Matematyka dla liceum|Matematyka dla liceum}}, {{lg|Piwowarstwo domowe|Piwowarstwo domowe}}.
== Podręczniki uznane za "wkład miesiąca" w latach 2006 - 2007 ==
Kontynuacją akcji "Najlepszy podręcznik miesiąca" był "Wkład miesiąca". Wyróżniono tym tytułem podręczniki takie jak: {{lg|Tatry/Okładka|Tatry}} oraz {{lg|MediaWiki w obrazkach/Okładka|MediaWiki w obrazkach}}.
== Wikibooks w mediach w latach 2005 - 2010 ==
W latach 2005 - 2010 o Wikibooks napisali:
* 2010 {{lz|s=http://informatyka.wikia.com/wiki/Wikibooks|n=Artykuł w portalu Informatyka wiki}}
* 2010-01-24 {{lz|s=http://www.facebook.com/notes/polska-wikipedia/6-urodziny-polskich-wikibooks-i-inicjatywa-wspolpracy-z-wolnymi-podrecznikami/266251696607|n=Facebook}} - "Polska Wikipedia: 6 urodziny polskich Wikibooks i inicjatywa współpracy z Wolnymi Podręcznikami"
* 2010-01-24 {{lz|s=http://www.dobreprogramy.pl/Szoste-urodziny-polskich-Wikibooks,Aktualnosc,16222.html|n=dobreprogramy.pl}} - "Szóste urodziny polskich Wikibooks"
* '''{{lz|s=http://pl.bigpedia.wikia.com/wiki/Wikibooks|n=Artykuł o Wikibooks}}''' Artykuł na Bigpedii
* '''{{lz|s=http://ksiazki.profeo.pl/blog/view/9024/Wikibooks-czyli-biblioteka-wolnych-podrecznikow.html|n=profeo.pl}}''' - "Wikibooks, czyli biblioteka wolnych podręczników. " 23 grudnia 2008
* '''{{lz|s=http://vbeta.pl/2008/07/13/wikibooks-obchodzi-5-urodziny/|n=vbeta.pl}}''' - "WikiBooks obchodzi 5 urodziny" 13 lipca 2008
* '''e-mentor''', nr 3 (25)/2008 (16.VI.2008), Robert Gajewski "Otwarte Zasoby Edukacyjne - kto się boi e- ?" część ''Świat według Wiki''
* ''{{lf|Wikipedia w szkole.pdf|Wikipedia w ławkach szkolnych|kp=chapter}}'' (str. 19) - wykład wygłoszony na Konferencji Wikimedia Polska 2007. Na 125 ankiet z gimnazjów i liceów nie odnotowano korzystania z Wikibooks. 3 maja 2007
* Paulina Wisniewska "Sposoby wykorzystania sieci komputerowych w nauczaniu - uczeniu sie fizyki", 21.IV.2007, UMK
* ''{{lz|s=http://kultura20.blog.polityka.pl/|c=p=132|n=Rusza projekt “Wolne podręczniki”}}'', blog Kultura 2.0, 7 lutego 2007
* '''Interklasa. Magazyn dla nauczycieli''', nr 10 (7.XII.2006), Katarzyna Kleczek "Wikipedia - skarbnica wiedzy czy źródło dezinformacji?" część ''Wikipedia jako narzędzie edukacyjne'':
*: "''Z punktu widzenia edukacji - ważny jest również projekt Wikibooks, który ma na celu poszerzenie i rozpowszechnienie darmowych, otwartych do edycji podręczników szkolnych, akademickich, poradników, instrukcji obsługi. Jego angielski podprojekt Wikiversity jest miejscem, gdzie studenci i nauczyciele razem tworzą podręczniki, uczą się i prowadzą badania. Wydaje się to doskonałym sposobem na redukcję kosztów nauczania oraz daje nowe możliwości nauczycielom, którzy mogliby za pomocą wiki stworzyć ciekawe projekty edukacyjne, docierające do szerokiej grupy odbiorców.''"
* '''ergo...''', str. 22, nr 9/2006, Konrad Stobiecki "Doświadczenia i rozwiązania: OpenOffice.org"
* ''{{lz|s=http://artykuly.zyxist.com/czytaj.php/wspomnienia_z_wikibooks|n=Wspomnienia z Wikibooks}}'', blog Dzienniki Zyxowe, 9 lipca 2006
* Irena Pulak, "Od podrecznika do hipermediów, czyli kilka refleksji o e-bookach i hipertekstach w edukacji" część "''Podreczniki w Sieci''", VI.2006, AP
* ''{{lz|s=http://di.com.pl/news/12168,1.html|n=Książki na licencji Open Source}}'', Dziennik Internautów, 7 grudnia 2005
{{BrClear}}
<noinclude>{{UnikatowaStronaKoniec}}{{Kategoria|Pomoc - Strony projektu}}</noinclude>
ohsdkwdv1zvbdiurnu4viue7jip4bgv
Liczby zespolone
0
13385
544657
479332
2026-05-29T22:23:38Z
Persino
2851
544657
wikitext
text/x-wiki
{{status|-50%|Algebra|typ=z matematyki|poziom=Studia}}
<small>[[/Okładka/|< Okładka]]</small>
= <big><b>Wstęp do liczb zespolonych</b></big> =
{{wikipedia|Liczby zespolone}}{{Wersja do druku}}
== Spis treści ==
* [[Liczby zespolone/Od autora|Od autora]]
* [[Liczby zespolone/Historia|Historia]]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* [[Liczby zespolone/Definicje, twierdzenia, wzory|Definicje, twierdzenia, wzory]]
** [[Liczby zespolone/Liczby urojone|Liczby urojone]]
** [[Liczby zespolone/Płaszczyzna zespolona|Płaszczyzna zespolona]]
** [[Liczby zespolone/Liczby zespolone|Liczby zespolone]]
** [[Liczby zespolone/Postać algebraiczna|Postać algebraiczna]]
** [[Liczby zespolone/Sprzężenie liczby|Sprzężenie liczby]]
** [[Liczby zespolone/Moduł liczby|Moduł liczby]]
** [[Liczby zespolone/Argument liczby|Argument liczby]]
** [[Liczby zespolone/Postać trygonometryczna|Postać trygonometryczna]]
** [[Liczby zespolone/Postać wykładnicza|Postać wykładnicza]]
** [[Liczby zespolone/Podstawowe zależności|Podstawowe zależności]]
* [[Liczby zespolone/Tablice|Tablice]]
* [[Liczby zespolone/Działania na liczbach zespolonych|Działania na liczbach zespolonych]]
** [[Liczby zespolone/Dodawanie|Dodawanie]]
** [[Liczby zespolone/Odejmowanie|Odejmowanie]]
** [[Liczby zespolone/Mnożenie|Mnożenie]]
** [[Liczby zespolone/Dzielenie|Dzielenie]]
** [[Liczby zespolone/Potęgowanie i pierwiastkowanie|Potęgowanie i pierwiastkowanie]]
** [[Liczby zespolone/Przekształcanie postaci|Przekształcanie postaci]]
(...)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* [[Liczby zespolone/Dodatek|Dodatek]]
* [[Liczby zespolone/Bibliografia|Bibliografia]]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* [[Liczby zespolone/Wersja do druku|Wersja do druku]]
== Zobacz też ==
* [[Teoria grup przemiennych]]
* [[Algebra liniowa]]
{{BrClear}} <noinclude>{{Wolumin}}</noinclude>
l0gf3bserythx7lbi23csttld41jh0f
544663
544657
2026-05-30T00:21:53Z
Persino
2851
Anulowano wersję [[Special:Diff/544657|544657]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
544663
wikitext
text/x-wiki
<noinclude>
{{status|-50%|Algebra|typ=z matematyki|poziom=Studia}}
<small>[[/Okładka/|< Okładka]]</small>
=<big><b>Wstęp do liczb zespolonych</b></big>=
{{wikipedia|Liczby zespolone}}{{Wersja do druku}}</noinclude>
==Spis treści==
* [[Liczby zespolone/Od autora|Od autora]]
* [[Liczby zespolone/Historia|Historia]]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* [[Liczby zespolone/Definicje, twierdzenia, wzory|Definicje, twierdzenia, wzory]]
** [[Liczby zespolone/Liczby urojone|Liczby urojone]]
** [[Liczby zespolone/Płaszczyzna zespolona|Płaszczyzna zespolona]]
** [[Liczby zespolone/Liczby zespolone|Liczby zespolone]]
** [[Liczby zespolone/Postać algebraiczna|Postać algebraiczna]]
** [[Liczby zespolone/Sprzężenie liczby|Sprzężenie liczby]]
** [[Liczby zespolone/Moduł liczby|Moduł liczby]]
** [[Liczby zespolone/Argument liczby|Argument liczby]]
** [[Liczby zespolone/Postać trygonometryczna|Postać trygonometryczna]]
** [[Liczby zespolone/Postać wykładnicza|Postać wykładnicza]]
** [[Liczby zespolone/Podstawowe zależności|Podstawowe zależności]]
* [[Liczby zespolone/Tablice|Tablice]]
* [[Liczby zespolone/Działania na liczbach zespolonych|Działania na liczbach zespolonych]]
** [[Liczby zespolone/Dodawanie|Dodawanie]]
** [[Liczby zespolone/Odejmowanie|Odejmowanie]]
** [[Liczby zespolone/Mnożenie|Mnożenie]]
** [[Liczby zespolone/Dzielenie|Dzielenie]]
** [[Liczby zespolone/Potęgowanie i pierwiastkowanie|Potęgowanie i pierwiastkowanie]]
** [[Liczby zespolone/Przekształcanie postaci|Przekształcanie postaci]]
(...)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* [[Liczby zespolone/Dodatek|Dodatek]]
* [[Liczby zespolone/Bibliografia|Bibliografia]]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* [[Liczby zespolone/Wersja do druku|Wersja do druku]]
== Zobacz też ==
* [[Teoria grup przemiennych]]
* [[Algebra liniowa]]
{{BrClear}} <noinclude>{{Wolumin}}</noinclude>
d3033ky0g6an2vc2qrot80q7g5bufzc
Moduł:StronicowyParser/AnalizaSpisuRzeczy
828
60192
544664
529606
2026-05-30T01:10:40Z
Persino
2851
544664
Scribunto
text/plain
local p={};
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=false;
local techniczne_modul=require("Module:Techniczne");
linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia);
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do
tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$")));
if(tak)then return true;end;
end;
return nil;
end;
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local techniczne_modul=require("Module:Techniczne");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,true);
if(liczba_start_rozdzial)then
rozdzial=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(rozdzial);
local czy_zerowy_spis_rzeczy;
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do
czy_zerowy_spis_rzeczy=mw.ustring.match(rozdzial,p_wzor);
if(czy_zerowy_spis_rzeczy)then break;end;
end;
if((czy_zerowy_spis_rzeczy)and(not mw.ustring.match(rozdzial,"^%s+")))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
else
liczba_od=liczba_start_rozdzial;
end;
else
return;
end;
end;
return nil;
end;
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return;end;
return true;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa)and(zawartosc))then
if(nazwa=="center")then
return true;
end;
end;
end;
end;
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod,poziom_iteracji=iterator();
local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(not wynik)then
local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
end;
end;
end;
if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end;
else
return;
end;
end;
return nil;
end;
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
if(numer_rodzaju_artykulu==1)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))))
local function StronyWstepu(artykul)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=true;
for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do
tak=tak and (not mw.ustring.match(artykul,wzor));
if(not tak)then return tak;end;
end;
return tak;
end;
if((czy_glowny_spis_tresci)and(artykul==""))then
return false,numer_rodzaju_artykulu,czy_podrecznik,false;
else
if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then
return true,numer_rodzaju_artykulu,czy_podrecznik,false;
else
return true,numer_rodzaju_artykulu,czy_podrecznik,true;
end;
end;
else
return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false;
end;
end;
end;
return false,nil;
end;
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(obiekt=="SZABLON")then
local szablonowe_modul=require("Module:Szablonowe");
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(nazwa_szablonu=="SpisTreści")then
return true,1;
else
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
local parametr_linku;
if(tabela_spisu[1]==true)then
local numer_link=tabela_spisu["numer_link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
else
local numer_link=tabela_spisu["link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
end;
if(parametr_linku)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
end;
end;
end;
end;
end);
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
return false;
end;
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
end;
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
function p.SzukanieNaPodstawieWzoru(str,wzor,liczba,liczba2,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba)and(liczba2)and(liczba>liczba2))then return;end;
local a,b,c,d,e,f,g,h,i,j,k,l=mw.ustring.find(str,wzor,liczba);
if((a)and(b)and(a>b))then return;end;
if((not liczba2)or(b<=liczba2))then
return a,b,c,d,e,f,g,h,i,j,k,l;
end;
return nil;
else
if((liczba)and(liczba2)and(liczba<liczba2))then return;end;
local liczba_start=liczba2 or 1;
local a,b,c,d,e,f,g,h,i,j,k,l=nil,nil,nil,nil,nil,nil,nil;
while(true)do
local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1=mw.ustring.find(str,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba)))then
return a,b,c,d,e,f,g,h,i,j,k,l;
elseif((b1)and(b1==liczba))then
return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1;
end;
a,b,c,d,e,f,g,h,i,j,k,l=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1;
if(not jak)then
if(a1==b1)then
liczba_start=b1+1;
else
liczba_start=b1;
end;
else
liczba_start=b1+1;
end;
end;
end;
end;
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true);
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local obiekt="SZABLON";
local kod=kod_szablon and tonumber(kod_szablon) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
----
local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
end);
if(liczba_koniec_szablon)then
return liczba_koniec_szablon,norma_wzoru;
end;
elseif(not liczba_start_szablon)then
return nil;
end;
end;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba,liczba2,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local liczba_start_szablon;local liczba_koniec_szablon;
local liczba_wys_szablon=liczba;
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
local spis_naglowka_szablon;
local spis_naglowka_szablon_stare;
while(true)do
local kod;
liczba_start_szablon,liczba_koniec_szablon,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_szablonu,liczba_wys_szablon,liczba2,czy_od_tylu);
if(liczba_start_szablon)then
if(not czy_od_tylu)then liczba_wys_szablon=liczba_koniec_szablon;else liczba_wys_szablon=liczba_start_szablon;end;
local obiekt="SZABLON";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local liczba_szablon_centrowany=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(liczba_szablon_centrowany)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany];
if(naglowek)then
if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then
if(czy_spis_tresci)then
spis_naglowka_szablon_stare=naglowek;
spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",};
if(czy_spis_tresci(spis_naglowka_szablon))then
return false;
end;
else
spis_naglowka_szablon=naglowek;
return false;
end;
end;
end;
end;
return true;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
local liczba_start_znacznik;local liczba_koniec_znacznik;
local liczba_wys_znacznik=liczba;
local norma_kodowania_znacznika=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK");
local spis_naglowka_znacznik;
local spis_naglowka_znacznik_stare;
while(true)do
local kod;
liczba_start_znacznik,liczba_koniec_znacznik,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_znacznika,liczba_wys_znacznik,liczba2,czy_od_tylu);
if(liczba_start_znacznik)then
if(not czy_od_tylu)then liczba_wys_znacznik=liczba_koniec_znacznik;else liczba_wys_znacznik=liczba_start_znacznik;end;
local obiekt="ZNACZNIK";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
if(zawartosc)then
if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then
if(czy_spis_tresci)then
spis_naglowka_znacznik_stare=zawartosc;
spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(zawartosc,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",};
if(czy_spis_tresci(spis_naglowka_znacznik))then
break;
end;
else
spis_naglowka_znacznik=zawartosc;
break;
end;
end;
end;
end;
else
break;
end;
end;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local liczba_start_dodatni;local liczba_koniec_dodatni;
local liczba_wys_dodatni=liczba;
local spis_naglowka_dodatni;
local spis_naglowka_dodatni_stare;
local spis_naglowka_poziom;
while(true)do
local naglowek;
liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*",liczba_wys_dodatni,liczba2,czy_od_tylu);
if(not liczba_start_dodatni)then break;end;
if(not czy_od_tylu)then liczba_wys_dodatni=liczba_koniec_dodatni;else liczba_wys_dodatni=liczba_start_dodatni;end;
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
if(czy_spis_tresci)then
spis_naglowka_dodatni_stare=naglowek;
spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",};
spis_naglowka_poziom=poziom_naglowka;
if(czy_spis_tresci(spis_naglowka_dodatni))then
break;
end;
else
spis_naglowka_dodatni=naglowek;
spis_naglowka_poziom=poziom_naglowka;
break;
end;
end;
end;
if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then
local _max_min;
if(czy_od_tylu)then
_max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0);
else
_max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu);
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
local spis_naglowka_szablon_stare=spis_naglowka_szablon_stare or spis_naglowka_szablon;
if((not czy_spis_tresci)and(spis_naglowka_szablon))then
spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",};
end;
return liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon,spis_naglowka_szablon_stare;
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
local spis_naglowka_znacznik_stare=spis_naglowka_znacznik_stare or spis_naglowka_znacznik;
if((not czy_spis_tresci)and(spis_naglowka_znacznik))then
spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_znacznik,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",};
end;
return liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik,spis_naglowka_znacznik_stare;
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
local spis_naglowka_dodatni_stare=spis_naglowka_dodatni_stare or spis_naglowka_dodatni;
if((not czy_spis_tresci)and(spis_naglowka_dodatni))then
spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_dodatni,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",};
end;
return liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_poziom;
end;
end;
return nil;
end;
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local linki=function(zawartosc)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
elseif(obiekt=="SZABLON")then
local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
end);
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
if(obiekt=="SZABLON")then
local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return nil;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return nil;end;
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end);
return szablon,obiekt,kod;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
return nil;
end;
end;
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu)
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;local a10;
local dlugosc_tekstu_wyszukiwanego=#tekst_rozwiniety_calego_artykulu;
if(not czy_od_tylu)then
if((not liczba_start_tekst)or(liczba_start_tekst==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false);
if(not liczba_start_rozdzial)then
if((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_start_tekst)or(liczba_start_tekst==1))and((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false);
end;
end;
end;
end;
else
if(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true);
if(not liczba_start_rozdzial)then
if((not liczba2)or(liczba2==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_start_tekst)or(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego))and((not liczba2)or(liczba2==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
end;
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
--czy_w_petli=true;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
return true;
elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then
tak=true;
elseif(czy_okladka)then
tak=true;
end;
end;
return (not tak);
end;
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1);
if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
or(mw.ustring.match(str,"^[%*#:;<>]+.*$")
or(mw.ustring.match(str,"^[%s%p%w]*$")))
)then return nil;end;
local ile_punktowanych=0;
local szablonowe_modul=require("Module:Szablonowe");
local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then
ile_punktowanych=ile_punktowanych+1;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then
ile_punktowanych=ile_punktowanych+1;
break;
end;
end;
end;
end);
if(ile_punktowanych>=ile)then
return nil;
end;
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
if(czy_zeruj)then
tab_zmienne.liczba_nie_okladka_artykul=nil;
tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil;
tab_zmienne.czy_ten_rozdzial=nil;
--tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,}
end;
return true;
end;
end;
return nil;
end;
end;
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)
local odtylu=liczba_obiekt_start_spac_par;
local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka;
local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej;
local czy_fun=false;
local czy_pierwszy=nil;
local liczba_koniec_naglowek_poczt=nil;
while(true)do
local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe;
if(czy_dodatni==1)then
local _;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
elseif(czy_dodatni==2)then
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[%*#:;<>]+[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
else
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
end;
if(not liczba_start_naglowek_nowe)then
break;
else
poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe;
local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_tak_spisowe)then
if(not czy_pierwszy)then
liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe;
czy_pierwszy=true;
end;
if(liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then
local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1);
if((pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"))and((czy_dodatni==1)and(poziom_naglowka_nowe>=poziom_naglowka)or(czy_dodatni~=1)))then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe);
if(not spis_tresci)then
--local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
if(czy_wynik)then return false;end;
end;
czy_fun=true;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
end;
end;
odtylu=liczba_start_naglowek_nowe;
end;
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
end
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe);
----
if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end;
----
local str_spacja_lub_zerowy_naglowek=function(tekst)
local ile_znalezione_linie_wedlug_wzoru=0;
local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then
ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1;
end;
return nil;
end);
if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end;
return nil;
end;
if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then
local liczba_szukaj_odtylu_tekst=liczba_start_naglowek;
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(not liczba_start_rozdzial)then
while(true)do
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
end;
if(not liczba_start_naglowek_temp)then break;end;
end;
end;
elseif(not liczba_start_naglowek)then
local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_naglowek_temp)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then
----
local tak=false;
local czy_w_petli=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
if(numer_rodzaju_artykulu==1)then
tak=true;
break;
end;
end;
end;
end;
if((tak)or(not czy_w_petli))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
end;
end;
else
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
end;
end;
end;
end;
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek;
end;
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)
local liczba_spac=0;
if(liczba_start)then
local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia;
while(true)do
local liczba_start_tekst_stare=liczba_start_tekst;
linia=nil
local liczba_szukaj_odtylu_tekst=liczba_start_tekst;
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
local czy_poczt;
if(not liczba_start_tekst)then
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
czy_poczt=true;
else
czy_poczt=false;
end;
local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil;
if(rozdzial_dodatki)then
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac;
end;
end;
local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil;
if(spacja)then
liczba_spac=liczba_spac+#linia+(czy_poczt and 1 or 2);
elseif((not spacja)and(linia))then
local czy_spis=nil;
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
if(not spis_tresci)then
liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1);
liczba_start=liczba_start_rozdzial or ((mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$")) and liczba_start_tekst or liczba_koniec_tekst);
czy_spis=liczba_start_rozdzial and true or nil;
else
liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]];
czy_spis=true;
end;
if(not liczba_start_rozdzial)then
if(not spis_tresci)then
local szablonowe_modul=require("Module:Szablonowe");
if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
local tak=false;
local czy_okladka=nil;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
tak=true;
break;
end;
end;
end;
liczba_start=tak and liczba_start_tekst or liczba_start;
else
liczba_start=liczba_koniec_tekst;
end;
else
liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]];
end;
end;
return liczba_start,liczba_spac,czy_spis;
elseif(not liczba_start_tekst)then
return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil;
end;
end;
end;
return liczba_start,liczba_spac,nil;
end;
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
---
if((liczba_linki_nierozdzialowe_szablonu)
and(
(przed_tekst=="")
or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$"))
)
)then
liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
----
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
----
----
if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return liczba_linki_nierozdzialowe_szablonu,true;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon;
for szablon,obiekt,kod in iterator do
local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_znajdz)then
local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_tekst)then
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return liczba_linki_nierozdzialowe_szablonu,true;
end;
end;
else
return liczba_spisowa,false;
end;
szablon_obiekt_temp,szablon_kod_temp=obiekt,kod;
end;
end;
return liczba_spisowa,false;
end;
end;
else
return liczba_spisowa,false;
end;
end;
end;
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=nil;
local techniczne_modul=require("Module:Techniczne");
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek)
naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek);
if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then
return true;
end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not liczba_rozdzial_start)then
liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)then tak=true;end;
end;
if(liczba_rozdzial_start)then
local liczba_rozdzial_start2,liczba_rozdzial_koniec2;
if(not tak)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then
if(liczba_rozdzial_start3<liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
end;
elseif(liczba_rozdzial_start3)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
elseif(liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil;
end;
end;
-----
local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst));
if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end;
local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec);
local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or "";
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia)
local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$");
if((obiekt)and(kod)and(dalszy_tekst))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then
return linia;
end;
end;
linia=dalszy_tekst or linia;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if(czy_element_spisu)then
return linia;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
return linia;
else
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return "";
end);
return wynik;
end;
end;
end;
return "";
end);
tekst=tekst1..str_bibliografia..tekst2;
end;
return tekst;
end;
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end;
----
local liczba_start=nil;local liczba_koniec=nil;
----
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
-----
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
----
local liczba_obiekt_koniec=1;
local liczba_pierwszy_rozdzialowy_artykul=nil;
local liczba_nie_okladka_artykul=nil;
local tab_nazwa_spisow_przekierowaniowych={};
local liczba_start_rozdzial=1;
local liczba_obiekt_start_poprz=nil;
local liczba_obiekt_koniec_poprz=nil;
local liczba_nie_okladka_artykul_koniec=nil;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
if(liczba_start_szablon)then
liczba_obiekt_koniec=liczba_koniec_szablon;
--local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local czy_rozdzial_dodatni;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>")))));
czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_element_spisu)or(czy_okladka))then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp;
local tak=false;
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu_temp)and(not czy_okladka_temp))then
if(numer_rodzaju_artykulu_temp==1)then
tak=true;
break;
end;
end;
end;
end;
if(tak)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp;
end;
end;
liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul;
liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul;
liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
----
if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then
local czy_bez_naglowka=nil;
local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start;
local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec;
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil;
local czy_ten_rozdzial=true;
local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
local liczba_spis_tresci_start,liczba_spis_tresci_koniec=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek)
if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local czy_zeruj=(not liczba_spis_tresci_start)and true or false;
liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe;
local tab_zmienne={
liczba_nie_okladka_artykul=liczba_nie_okladka_artykul,
liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul,
czy_ten_rozdzial=czy_ten_rozdzial,
};
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
if(not czy_ten_rozdzial)then
if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then
liczba_start_rozdzial=liczba_obiekt_start_nowe_temp;
liczba_obiekt_start_nowe=liczba_obiekt_start;
czy_ten_rozdzial=true;
tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
end;
end;
-----
liczba_start_naglowek=liczba_start_naglowek or liczba_spis_tresci_start;
if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then
----
czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false;
----
if(liczba_start_naglowek)then
local liczba_przed_rozdzialem;local czy_znajdz;
liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek);
local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_start_naglowek_przed)then
if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then
liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
break;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
break;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if(liczba_start_sugerowane>liczba_start_naglowek_przed)then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if(liczba_start_nowa>liczba_start_naglowek_przed)then
liczba_start=liczba_start_nowa;
end;
end;
end;
end;
else
liczba_start=liczba_spis_tresci;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
break;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
break;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if(liczba_start_sugerowane>liczba_start_naglowek_przed)then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if(liczba_start_nowa>liczba_start_naglowek_przed)then
liczba_start=liczba_start_nowa;
end;
end;
end;
end;
end;
else
liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
break;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
break;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
local liczba_start_od_tylu=liczba_start_sugerowane;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
liczba_start=liczba_start_nowa or liczba_start_sugerowane;
else
liczba_start=liczba_start_sugerowane;
end;
end;
else
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1);
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
return true;
end;
end;
return nil;
end);
if(liczba_start_naglowek)then
liczba_obiekt_start_nowe=liczba_start_naglowek;
end;
--[[]]
local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe);
liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
break;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
break;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
local liczba_start_od_tylu=liczba_start_sugerowane;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
liczba_start=liczba_start_nowa or liczba_start_sugerowane;
end;
end;
break;
else
liczba_start_rozdzial=liczba_obiekt_koniec_nowe;
liczba_nie_okladka_artykul_koniec=nil;
end;
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
else
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
end;
end;
else
break;
end;
end;
if(not liczba_start)then return "";end;
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true);
----
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")));
local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_koniec=liczba_koniec_szablon;
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil;
if(liczba_start<=liczba_obiekt_start)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
if(not czy_element_spisu)then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
--if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then
czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
---elseif((lista_szablon=="")and(przerwa_szablon==""))then
---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
---end;
if(czy_element_spisu)then break;end;
end;
end;
end;
end;
if(czy_element_spisu)then
local function IleKoniec()
while(true)do
local poczatek_nierozdzalowe=liczba_obiekt_koniec;
local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false)
if(liczba_start_nieszablon_nielink_nierozdzialowa)then
local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$");
if(rozdzial_dodatki)then
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return;
end;
end;
local czy_spacje=mw.ustring.match(linia,"^%s*$");
if(not czy_spacje)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return;
elseif(czy_spacje)then
liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa;
--else
-- liczba_koniec=#tekst_rozwiniety_calego_artykulu;
-- return;
end;
else
liczba_koniec=#tekst_rozwiniety_calego_artykulu;
break;
end;
end;
end;
IleKoniec();
break;
end;
end;
else
break;
end;
end;
if(liczba_koniec)then
local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then
koniec_dodatnie_rozdzialy=liczba_rozdzial_start;
local start=1;
while(true)do
local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start);
local koniec_obiekt;local kod_obiekt;local obiekt=nil;
if(start_szablon)then
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
--koniec_obiekt=koniec_szablon;
local kod=kod_szablon;
local obiekt=obiekt_szablon;
local kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
if(czy_element)then
liczba_koniec=liczba_rozdzial_koniec;
break;
end;
end;
start=koniec_szablon;
else
break;
end;
end;
else
break;
end;
end;
end;
if(not liczba_koniec)then return "";end;
if(liczba_start>=liczba_koniec)then return "";end;
--- Licencja ----
local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then
liczba_koniec=licencja_koniec;
end;
-----
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
-----
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
--mw.log(tekst)
--- Licencja ----
--mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa)
--mw.log("TYTAN1",tekst,"TYTAN2")
--return nil;
--local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
return tekst;
end;
return p;
qgdpfcbkmeivcdn3se9yo0o5fmojbj5
544666
544664
2026-05-30T03:17:36Z
Persino
2851
Anulowano wersję [[Special:Diff/544664|544664]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
544666
Scribunto
text/plain
local p={};
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=false;
local techniczne_modul=require("Module:Techniczne");
linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia);
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do
tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$")));
if(tak)then return true;end;
end;
return nil;
end;
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local techniczne_modul=require("Module:Techniczne");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,true);
if(liczba_start_rozdzial)then
rozdzial=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(rozdzial);
local czy_zerowy_spis_rzeczy;
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do
czy_zerowy_spis_rzeczy=mw.ustring.match(rozdzial,p_wzor);
if(czy_zerowy_spis_rzeczy)then break;end;
end;
if((czy_zerowy_spis_rzeczy)and(not mw.ustring.match(rozdzial,"^%s+")))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
else
liczba_od=liczba_start_rozdzial;
end;
else
return;
end;
end;
return nil;
end;
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return;end;
return true;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa)and(zawartosc))then
if(nazwa=="center")then
return true;
end;
end;
end;
end;
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod,poziom_iteracji=iterator();
local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(not wynik)then
local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
end;
end;
end;
if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end;
else
return;
end;
end;
return nil;
end;
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
if(numer_rodzaju_artykulu==1)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))))
local function StronyWstepu(artykul)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=true;
for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do
tak=tak and (not mw.ustring.match(artykul,wzor));
if(not tak)then return tak;end;
end;
return tak;
end;
if((czy_glowny_spis_tresci)and(artykul==""))then
return false,numer_rodzaju_artykulu,czy_podrecznik,false;
else
if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then
return true,numer_rodzaju_artykulu,czy_podrecznik,false;
else
return true,numer_rodzaju_artykulu,czy_podrecznik,true;
end;
end;
else
return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false;
end;
end;
end;
return false,nil;
end;
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(obiekt=="SZABLON")then
local szablonowe_modul=require("Module:Szablonowe");
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(nazwa_szablonu=="SpisTreści")then
return true,1;
else
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
local parametr_linku;
if(tabela_spisu[1]==true)then
local numer_link=tabela_spisu["numer_link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
else
local numer_link=tabela_spisu["link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
end;
if(parametr_linku)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
end;
end;
end;
end;
end);
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
return false;
end;
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
end;
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
function p.SzukanieNaPodstawieWzoru(str,wzor,liczba,liczba2,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba)and(liczba2)and(liczba>liczba2))then return;end;
local a,b,c,d,e,f,g,h,i,j,k,l=mw.ustring.find(str,wzor,liczba);
if((a)and(b)and(a>b))then return;end;
if((not liczba2)or(b<=liczba2))then
return a,b,c,d,e,f,g,h,i,j,k,l;
end;
return nil;
else
if((liczba)and(liczba2)and(liczba<liczba2))then return;end;
local liczba_start=liczba2 or 1;
local a,b,c,d,e,f,g,h,i,j,k,l=nil,nil,nil,nil,nil,nil,nil;
while(true)do
local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1=mw.ustring.find(str,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba)))then
return a,b,c,d,e,f,g,h,i,j,k,l;
elseif((b1)and(b1==liczba))then
return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1;
end;
a,b,c,d,e,f,g,h,i,j,k,l=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1;
if(not jak)then
if(a1==b1)then
liczba_start=b1+1;
else
liczba_start=b1;
end;
else
liczba_start=b1+1;
end;
end;
end;
end;
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true);
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local obiekt="SZABLON";
local kod=kod_szablon and tonumber(kod_szablon) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
----
local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
end);
if(liczba_koniec_szablon)then
return liczba_koniec_szablon,norma_wzoru;
end;
elseif(not liczba_start_szablon)then
return nil;
end;
end;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba,liczba2,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local liczba_start_szablon;local liczba_koniec_szablon;
local liczba_wys_szablon=liczba;
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
local spis_naglowka_szablon;
local spis_naglowka_szablon_stare;
while(true)do
local kod;
liczba_start_szablon,liczba_koniec_szablon,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_szablonu,liczba_wys_szablon,liczba2,czy_od_tylu);
if(liczba_start_szablon)then
if(not czy_od_tylu)then liczba_wys_szablon=liczba_koniec_szablon;else liczba_wys_szablon=liczba_start_szablon;end;
local obiekt="SZABLON";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local liczba_szablon_centrowany=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(liczba_szablon_centrowany)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany];
if(naglowek)then
if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then
if(czy_spis_tresci)then
spis_naglowka_szablon_stare=naglowek;
spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",};
if(czy_spis_tresci(spis_naglowka_szablon))then
return false;
end;
else
spis_naglowka_szablon=naglowek;
return false;
end;
end;
end;
end;
return true;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
local liczba_start_znacznik;local liczba_koniec_znacznik;
local liczba_wys_znacznik=liczba;
local norma_kodowania_znacznika=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK");
local spis_naglowka_znacznik;
local spis_naglowka_znacznik_stare;
while(true)do
local kod;
liczba_start_znacznik,liczba_koniec_znacznik,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_znacznika,liczba_wys_znacznik,liczba2,czy_od_tylu);
if(liczba_start_znacznik)then
if(not czy_od_tylu)then liczba_wys_znacznik=liczba_koniec_znacznik;else liczba_wys_znacznik=liczba_start_znacznik;end;
local obiekt="ZNACZNIK";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
if(zawartosc)then
if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then
if(czy_spis_tresci)then
spis_naglowka_znacznik_stare=zawartosc;
spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(zawartosc,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",};
if(czy_spis_tresci(spis_naglowka_znacznik))then
break;
end;
else
spis_naglowka_znacznik=zawartosc;
break;
end;
end;
end;
end;
else
break;
end;
end;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local liczba_start_dodatni;local liczba_koniec_dodatni;
local liczba_wys_dodatni=liczba;
local spis_naglowka_dodatni;
local spis_naglowka_dodatni_stare;
local spis_naglowka_poziom;
while(true)do
local naglowek;
liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*",liczba_wys_dodatni,liczba2,czy_od_tylu);
if(not liczba_start_dodatni)then break;end;
if(not czy_od_tylu)then liczba_wys_dodatni=liczba_koniec_dodatni;else liczba_wys_dodatni=liczba_start_dodatni;end;
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
if(czy_spis_tresci)then
spis_naglowka_dodatni_stare=naglowek;
spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",};
spis_naglowka_poziom=poziom_naglowka;
if(czy_spis_tresci(spis_naglowka_dodatni))then
break;
end;
else
spis_naglowka_dodatni=naglowek;
spis_naglowka_poziom=poziom_naglowka;
break;
end;
end;
end;
if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then
local _max_min;
if(czy_od_tylu)then
_max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0);
else
_max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu);
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
local spis_naglowka_szablon_stare=spis_naglowka_szablon_stare or spis_naglowka_szablon;
if((not czy_spis_tresci)and(spis_naglowka_szablon))then
spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",};
end;
return liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon,spis_naglowka_szablon_stare;
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
local spis_naglowka_znacznik_stare=spis_naglowka_znacznik_stare or spis_naglowka_znacznik;
if((not czy_spis_tresci)and(spis_naglowka_znacznik))then
spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_znacznik,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",};
end;
return liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik,spis_naglowka_znacznik_stare;
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
local spis_naglowka_dodatni_stare=spis_naglowka_dodatni_stare or spis_naglowka_dodatni;
if((not czy_spis_tresci)and(spis_naglowka_dodatni))then
spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_dodatni,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",};
end;
return liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_poziom;
end;
end;
return nil;
end;
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local linki=function(zawartosc)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
elseif(obiekt=="SZABLON")then
local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
end);
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
if(obiekt=="SZABLON")then
local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return nil;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return nil;end;
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end);
return szablon,obiekt,kod;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
return nil;
end;
end;
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu)
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;local a10;
local dlugosc_tekstu_wyszukiwanego=#tekst_rozwiniety_calego_artykulu;
if(not czy_od_tylu)then
if((not liczba_start_tekst)or(liczba_start_tekst==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false);
if(not liczba_start_rozdzial)then
if((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_start_tekst)or(liczba_start_tekst==1))and((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false);
end;
end;
end;
end;
else
if(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true);
if(not liczba_start_rozdzial)then
if((not liczba2)or(liczba2==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_start_tekst)or(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego))and((not liczba2)or(liczba2==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
end;
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
--czy_w_petli=true;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
return true;
elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then
tak=true;
elseif(czy_okladka)then
tak=true;
end;
end;
return (not tak);
end;
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1);
if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
or(mw.ustring.match(str,"^[%*#:;<>]+.*$")
or(mw.ustring.match(str,"^[%s%p%w]*$")))
)then return nil;end;
local ile_punktowanych=0;
local szablonowe_modul=require("Module:Szablonowe");
local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then
ile_punktowanych=ile_punktowanych+1;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then
ile_punktowanych=ile_punktowanych+1;
break;
end;
end;
end;
end);
if(ile_punktowanych>=ile)then
return nil;
end;
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
if(czy_zeruj)then
tab_zmienne.liczba_nie_okladka_artykul=nil;
tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil;
tab_zmienne.czy_ten_rozdzial=nil;
--tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,}
end;
return true;
end;
end;
return nil;
end;
end;
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)
local odtylu=liczba_obiekt_start_spac_par;
local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka;
local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej;
local czy_fun=false;
local czy_pierwszy=nil;
local liczba_koniec_naglowek_poczt=nil;
while(true)do
local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe;
if(czy_dodatni==1)then
local _;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
elseif(czy_dodatni==2)then
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[%*#:;<>]+[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
else
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
end;
if(not liczba_start_naglowek_nowe)then
break;
else
poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe;
local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_tak_spisowe)then
if(not czy_pierwszy)then
liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe;
czy_pierwszy=true;
end;
if(liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then
local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1);
if((pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"))and((czy_dodatni==1)and(poziom_naglowka_nowe>=poziom_naglowka)or(czy_dodatni~=1)))then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe);
if(not spis_tresci)then
--local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
if(czy_wynik)then return false;end;
end;
czy_fun=true;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
end;
end;
odtylu=liczba_start_naglowek_nowe;
end;
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
end
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe);
----
if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end;
----
local str_spacja_lub_zerowy_naglowek=function(tekst)
local ile_znalezione_linie_wedlug_wzoru=0;
local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then
ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1;
end;
return nil;
end);
if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end;
return nil;
end;
if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then
local liczba_szukaj_odtylu_tekst=liczba_start_naglowek;
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(not liczba_start_rozdzial)then
while(true)do
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
end;
if(not liczba_start_naglowek_temp)then break;end;
end;
end;
elseif(not liczba_start_naglowek)then
local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_naglowek_temp)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then
----
local tak=false;
local czy_w_petli=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
if(numer_rodzaju_artykulu==1)then
tak=true;
break;
end;
end;
end;
end;
if((tak)or(not czy_w_petli))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
end;
end;
else
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
end;
end;
end;
end;
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek;
end;
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)
local liczba_spac=0;
if(liczba_start)then
local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia;
while(true)do
local liczba_start_tekst_stare=liczba_start_tekst;
linia=nil
local liczba_szukaj_odtylu_tekst=liczba_start_tekst;
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
local czy_poczt;
if(not liczba_start_tekst)then
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
czy_poczt=true;
else
czy_poczt=false;
end;
local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil;
if(rozdzial_dodatki)then
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac;
end;
end;
local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil;
if(spacja)then
liczba_spac=liczba_spac+#linia+(czy_poczt and 1 or 2);
elseif((not spacja)and(linia))then
local czy_spis=nil;
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
if(not spis_tresci)then
liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1);
liczba_start=liczba_start_rozdzial or ((mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$")) and liczba_start_tekst or liczba_koniec_tekst);
czy_spis=liczba_start_rozdzial and true or nil;
else
liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]];
czy_spis=true;
end;
if(not liczba_start_rozdzial)then
if(not spis_tresci)then
local szablonowe_modul=require("Module:Szablonowe");
if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
local tak=false;
local czy_okladka=nil;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
tak=true;
break;
end;
end;
end;
liczba_start=tak and liczba_start_tekst or liczba_start;
else
liczba_start=liczba_koniec_tekst;
end;
else
liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]];
end;
end;
return liczba_start,liczba_spac,czy_spis;
elseif(not liczba_start_tekst)then
return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil;
end;
end;
end;
return liczba_start,liczba_spac,nil;
end;
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
---
if((liczba_linki_nierozdzialowe_szablonu)
and(
(przed_tekst=="")
or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$"))
)
)then
liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
----
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
----
----
if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return liczba_linki_nierozdzialowe_szablonu,true;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon;
for szablon,obiekt,kod in iterator do
local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_znajdz)then
local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_tekst)then
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return liczba_linki_nierozdzialowe_szablonu,true;
end;
end;
else
return liczba_spisowa,false;
end;
szablon_obiekt_temp,szablon_kod_temp=obiekt,kod;
end;
end;
return liczba_spisowa,false;
end;
end;
else
return liczba_spisowa,false;
end;
end;
end;
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=nil;
local techniczne_modul=require("Module:Techniczne");
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek)
naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek);
if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then
return true;
end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not liczba_rozdzial_start)then
liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)then tak=true;end;
end;
if(liczba_rozdzial_start)then
local liczba_rozdzial_start2,liczba_rozdzial_koniec2;
if(not tak)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then
if(liczba_rozdzial_start3<liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
end;
elseif(liczba_rozdzial_start3)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
elseif(liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil;
end;
end;
-----
local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst));
if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end;
local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec);
local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or "";
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia)
local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$");
if((obiekt)and(kod)and(dalszy_tekst))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then
return linia;
end;
end;
linia=dalszy_tekst or linia;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if(czy_element_spisu)then
return linia;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
return linia;
else
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return "";
end);
return wynik;
end;
end;
end;
return "";
end);
tekst=tekst1..str_bibliografia..tekst2;
end;
return tekst;
end;
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end;
----
local liczba_start=nil;local liczba_koniec=nil;
----
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
-----
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
----
local liczba_obiekt_koniec=1;
local liczba_pierwszy_rozdzialowy_artykul=nil;
local liczba_nie_okladka_artykul=nil;
local tab_nazwa_spisow_przekierowaniowych={};
local liczba_start_rozdzial=1;
local liczba_obiekt_start_poprz=nil;
local liczba_obiekt_koniec_poprz=nil;
local liczba_nie_okladka_artykul_koniec=nil;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
if(liczba_start_szablon)then
liczba_obiekt_koniec=liczba_koniec_szablon;
--local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local czy_rozdzial_dodatni;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>")))));
czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_element_spisu)or(czy_okladka))then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp;
local tak=false;
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu_temp)and(not czy_okladka_temp))then
if(numer_rodzaju_artykulu_temp==1)then
tak=true;
break;
end;
end;
end;
end;
if(tak)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp;
end;
end;
liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul;
liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul;
liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
----
if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then
local czy_bez_naglowka=nil;
local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start;
local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec;
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil;
local czy_ten_rozdzial=true;
local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
local liczba_spis_tresci_start,liczba_spis_tresci_koniec=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek)
if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local czy_zeruj=(not liczba_spis_tresci_start)and true or false;
liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe;
local tab_zmienne={
liczba_nie_okladka_artykul=liczba_nie_okladka_artykul,
liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul,
czy_ten_rozdzial=czy_ten_rozdzial,
};
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
if(not czy_ten_rozdzial)then
if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then
liczba_start_rozdzial=liczba_obiekt_start_nowe_temp;
liczba_obiekt_start_nowe=liczba_obiekt_start;
czy_ten_rozdzial=true;
tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
end;
end;
-----
liczba_start_naglowek=liczba_spis_tresci_start or liczba_start_naglowek;
if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then
----
czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false;
----
if(liczba_start_naglowek)then
local liczba_przed_rozdzialem;local czy_znajdz;
liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek);
local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_start_naglowek_przed)then
if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then
liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
break;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
break;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if(liczba_start_sugerowane>liczba_start_naglowek_przed)then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if(liczba_start_nowa>liczba_start_naglowek_przed)then
liczba_start=liczba_start_nowa;
end;
end;
end;
end;
else
liczba_start=liczba_spis_tresci;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
break;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
break;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if(liczba_start_sugerowane>liczba_start_naglowek_przed)then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if(liczba_start_nowa>liczba_start_naglowek_przed)then
liczba_start=liczba_start_nowa;
end;
end;
end;
end;
end;
else
liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
break;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
break;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
local liczba_start_od_tylu=liczba_start_sugerowane;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
liczba_start=liczba_start_nowa or liczba_start_sugerowane;
else
liczba_start=liczba_start_sugerowane;
end;
end;
else
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1);
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
return true;
end;
end;
return nil;
end);
if(liczba_start_naglowek)then
liczba_obiekt_start_nowe=liczba_start_naglowek;
end;
--[[]]
local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe);
liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
break;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
break;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
local liczba_start_od_tylu=liczba_start_sugerowane;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
liczba_start=liczba_start_nowa or liczba_start_sugerowane;
end;
end;
break;
else
liczba_start_rozdzial=liczba_obiekt_koniec_nowe;
liczba_nie_okladka_artykul_koniec=nil;
end;
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
else
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
end;
end;
else
break;
end;
end;
if(not liczba_start)then return "";end;
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true);
----
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")));
local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_koniec=liczba_koniec_szablon;
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil;
if(liczba_start<=liczba_obiekt_start)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
if(not czy_element_spisu)then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
--if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then
czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
---elseif((lista_szablon=="")and(przerwa_szablon==""))then
---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
---end;
if(czy_element_spisu)then break;end;
end;
end;
end;
end;
if(czy_element_spisu)then
local function IleKoniec()
while(true)do
local poczatek_nierozdzalowe=liczba_obiekt_koniec;
local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false)
if(liczba_start_nieszablon_nielink_nierozdzialowa)then
local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$");
if(rozdzial_dodatki)then
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return;
end;
end;
local czy_spacje=mw.ustring.match(linia,"^%s*$");
if(not czy_spacje)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return;
elseif(czy_spacje)then
liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa;
--else
-- liczba_koniec=#tekst_rozwiniety_calego_artykulu;
-- return;
end;
else
liczba_koniec=#tekst_rozwiniety_calego_artykulu;
break;
end;
end;
end;
IleKoniec();
break;
end;
end;
else
break;
end;
end;
if(liczba_koniec)then
local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then
koniec_dodatnie_rozdzialy=liczba_rozdzial_start;
local start=1;
while(true)do
local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start);
local koniec_obiekt;local kod_obiekt;local obiekt=nil;
if(start_szablon)then
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
--koniec_obiekt=koniec_szablon;
local kod=kod_szablon;
local obiekt=obiekt_szablon;
local kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
if(czy_element)then
liczba_koniec=liczba_rozdzial_koniec;
break;
end;
end;
start=koniec_szablon;
else
break;
end;
end;
else
break;
end;
end;
end;
if(not liczba_koniec)then return "";end;
if(liczba_start>=liczba_koniec)then return "";end;
--- Licencja ----
local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then
liczba_koniec=licencja_koniec;
end;
-----
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
-----
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
--mw.log(tekst)
--- Licencja ----
--mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa)
--mw.log("TYTAN1",tekst,"TYTAN2")
--return nil;
--local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
return tekst;
end;
return p;
rggfiwlfy3uaixfdzhnfjvzxglqddxm
Wikipedysta:Persino/brudnopis6
2
60220
544658
514078
2026-05-29T22:32:08Z
Persino
2851
544658
wikitext
text/x-wiki
[[/Okładka/|Okładka]]
[[/Okładka/]], [[w:Wstęp]]
Spis Rzeczys:
[[/Wstęp/|Wstęp]]
[[/Okładka/]]
{{PobierzNumerArtykułu|Liczby_urojone|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Liczby_zespolone/Liczby_urojone}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis6/Wstęp}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Egon~plwikibooks/Brudnopis}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_komputerów}}
{{PobierzNumerArtykułu|Streszczenie|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Wstępna_charakterystyka_bakteriofaga_Serratia_φOS10/Streszczenie}}
-----
{{PobierzNumerArtykułu|Lekcja_1-021|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pisownia_Wschodniej_Azji/Lekcja_1-02}}
-----
{{PobierzNumerArtykułu|O_języku|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=D/O_języku}}
-----
{{PobierzNumerArtykułu|Sosnowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Siewki_roślin_flory_Polski/Sosnowate}}
-----
{{PobierzNumerArtykułu|Widłakowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Atlas_flory_Polski/Widłakowate}}
-----
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Processing/Jak_uruchomić_Processing}}
AutoIt
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=AutoIt}}
AutoIt
{{PobierzNumerArtykułu|Odmiana_czasownika_być|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fiński/Odmiana_czasownika_być}}
AutoIt
{{PobierzNumerArtykułu|Wstęp|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Analiza_matematyczna/Ciągi_liczbowe}}
------
-----
{{PobierzNumerArtykułu|Wzory|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_liceum/Wzory}}
----
{{PobierzNumerArtykułu|Świat geometrii|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Matematyka}}
----
----
{{PobierzNumerArtykułu|Środowisko projektowe|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Axiom/Środowisko projektowe}}
----
{{PobierzNumerArtykułu|Literatura|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_w_systemie_UNIX}}
----
{{PobierzNumerArtykułu|Definicja|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Onomastyka/Definicja}}
----
{{PobierzNumerArtykułu|Wymowa|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Arabski/Wymowa}}
----
{{PobierzNumerArtykułu|Opis_ruchu_(I)|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_gimnazjum/Opis_ruchu_(I)}}
8seq2q4ga41z8a7n6pg3lgusdwuawtj
544659
544658
2026-05-29T22:33:16Z
Persino
2851
544659
wikitext
text/x-wiki
[[/Okładka/|Okładka]]
[[/Okładka/]], [[w:Wstęp]]
Spis Rzeczys:
[[/Wstęp/|Wstęp]]
[[/Okładka/]]
{{PobierzNumerArtykułu|Liczby_urojone|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Liczby_zespolone/Liczby_urojone}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis6/Wstęp}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Egon~plwikibooks/Brudnopis}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_komputerów}}
{{PobierzNumerArtykułu|Streszczenie|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Wstępna_charakterystyka_bakteriofaga_Serratia_φOS10/Streszczenie}}
-----
{{PobierzNumerArtykułu|Lekcja_1-021|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pisownia_Wschodniej_Azji/Lekcja_1-02}}
-----
{{PobierzNumerArtykułu|O_języku|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=D/O_języku}}
-----
{{PobierzNumerArtykułu|Sosnowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Siewki_roślin_flory_Polski/Sosnowate}}
-----
{{PobierzNumerArtykułu|Widłakowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Atlas_flory_Polski/Widłakowate}}
-----
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Processing/Jak_uruchomić_Processing}}
AutoIt
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=AutoIt}}
AutoIt
{{PobierzNumerArtykułu|Odmiana_czasownika_być|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fiński/Odmiana_czasownika_być}}
AutoIt
{{PobierzNumerArtykułu|Wstęp|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Analiza_matematyczna/Ciągi_liczbowe}}
------
-----
{{PobierzNumerArtykułu|Wzory|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_liceum/Wzory}}
----
{{PobierzNumerArtykułu|Świat geometrii|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Matematyka}}
----
----
{{PobierzNumerArtykułu|Środowisko projektowe|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Axiom/Środowisko projektowe}}
----
{{PobierzNumerArtykułu|Literatura|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_w_systemie_UNIX}}
----
{{PobierzNumerArtykułu|Definicja|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Onomastyka/Definicja}}
----
{{PobierzNumerArtykułu|Wymowa|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Arabski/Wymowa}}
----
{{PobierzNumerArtykułu|Opis_ruchu_(I)|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_gimnazjum/Opis_ruchu_(I)}}
ncr3633iyjwqz2425a3vlwfzzod9kx6
544660
544659
2026-05-29T22:36:37Z
Persino
2851
544660
wikitext
text/x-wiki
[[/Okładka/|Okładka]]
[[/Okładka/]], [[w:Wstęp]]
Spis Rzeczys:
[[/Wstęp/|Wstęp]]
[[/Okładka/]]
----
{{PobierzNumerArtykułu|Liczby_urojone|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Liczby_zespolone}}
-----
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis6/Wstęp}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Egon~plwikibooks/Brudnopis}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_komputerów}}
{{PobierzNumerArtykułu|Streszczenie|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Wstępna_charakterystyka_bakteriofaga_Serratia_φOS10/Streszczenie}}
-----
{{PobierzNumerArtykułu|Lekcja_1-021|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pisownia_Wschodniej_Azji/Lekcja_1-02}}
-----
{{PobierzNumerArtykułu|O_języku|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=D/O_języku}}
-----
{{PobierzNumerArtykułu|Sosnowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Siewki_roślin_flory_Polski/Sosnowate}}
-----
{{PobierzNumerArtykułu|Widłakowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Atlas_flory_Polski/Widłakowate}}
-----
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Processing/Jak_uruchomić_Processing}}
AutoIt
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=AutoIt}}
AutoIt
{{PobierzNumerArtykułu|Odmiana_czasownika_być|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fiński/Odmiana_czasownika_być}}
AutoIt
{{PobierzNumerArtykułu|Wstęp|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Analiza_matematyczna/Ciągi_liczbowe}}
------
-----
{{PobierzNumerArtykułu|Wzory|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_liceum/Wzory}}
----
{{PobierzNumerArtykułu|Świat geometrii|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Matematyka}}
----
----
{{PobierzNumerArtykułu|Środowisko projektowe|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Axiom/Środowisko projektowe}}
----
{{PobierzNumerArtykułu|Literatura|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_w_systemie_UNIX}}
----
{{PobierzNumerArtykułu|Definicja|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Onomastyka/Definicja}}
----
{{PobierzNumerArtykułu|Wymowa|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Arabski/Wymowa}}
----
{{PobierzNumerArtykułu|Opis_ruchu_(I)|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_gimnazjum/Opis_ruchu_(I)}}
hyuby299e2ec8qrffwz8zhuo832oba0
544661
544660
2026-05-29T22:38:12Z
Persino
2851
544661
wikitext
text/x-wiki
[[/Okładka/|Okładka]]
[[/Okładka/]], [[w:Wstęp]]
Spis Rzeczys:
[[/Wstęp/|Wstęp]]
[[/Okładka/]]
----
{{PobierzNumerArtykułu|Liczby_urojone|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Liczby_zespolone}}
<nowiki>-----
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis6/Wstęp}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Egon~plwikibooks/Brudnopis}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_komputerów}}
{{PobierzNumerArtykułu|Streszczenie|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Wstępna_charakterystyka_bakteriofaga_Serratia_φOS10/Streszczenie}}
-----
{{PobierzNumerArtykułu|Lekcja_1-021|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pisownia_Wschodniej_Azji/Lekcja_1-02}}
-----
{{PobierzNumerArtykułu|O_języku|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=D/O_języku}}
-----
{{PobierzNumerArtykułu|Sosnowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Siewki_roślin_flory_Polski/Sosnowate}}
-----
{{PobierzNumerArtykułu|Widłakowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Atlas_flory_Polski/Widłakowate}}
-----
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Processing/Jak_uruchomić_Processing}}
AutoIt
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=AutoIt}}
AutoIt
{{PobierzNumerArtykułu|Odmiana_czasownika_być|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fiński/Odmiana_czasownika_być}}
AutoIt
{{PobierzNumerArtykułu|Wstęp|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Analiza_matematyczna/Ciągi_liczbowe}}
------
-----
{{PobierzNumerArtykułu|Wzory|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_liceum/Wzory}}
----
{{PobierzNumerArtykułu|Świat geometrii|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Matematyka}}
----
----
{{PobierzNumerArtykułu|Środowisko projektowe|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Axiom/Środowisko projektowe}}
----
{{PobierzNumerArtykułu|Literatura|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_w_systemie_UNIX}}
----
{{PobierzNumerArtykułu|Definicja|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Onomastyka/Definicja}}
----
{{PobierzNumerArtykułu|Wymowa|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Arabski/Wymowa}}
----
{{PobierzNumerArtykułu|Opis_ruchu_(I)|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_gimnazjum/Opis_ruchu_(I)}}
</nowiki>
cr15qcidm6npatkb534hvsso87qq2x1
544662
544661
2026-05-29T23:48:39Z
Persino
2851
544662
wikitext
text/x-wiki
[[/Okładka/|Okładka]]
[[/Okładka/]], [[w:Wstęp]]
Spis Rzeczys:
[[/Wstęp/|Wstęp]]
[[/Okładka/]]
----
{{PobierzNumerArtykułu|Wstęp do liczb zespolonych|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Liczby_zespolone}}
<nowiki>-----
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis6/Wstęp}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Egon~plwikibooks/Brudnopis}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_komputerów}}
{{PobierzNumerArtykułu|Streszczenie|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Wstępna_charakterystyka_bakteriofaga_Serratia_φOS10/Streszczenie}}
-----
{{PobierzNumerArtykułu|Lekcja_1-021|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pisownia_Wschodniej_Azji/Lekcja_1-02}}
-----
{{PobierzNumerArtykułu|O_języku|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=D/O_języku}}
-----
{{PobierzNumerArtykułu|Sosnowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Siewki_roślin_flory_Polski/Sosnowate}}
-----
{{PobierzNumerArtykułu|Widłakowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Atlas_flory_Polski/Widłakowate}}
-----
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Processing/Jak_uruchomić_Processing}}
AutoIt
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=AutoIt}}
AutoIt
{{PobierzNumerArtykułu|Odmiana_czasownika_być|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fiński/Odmiana_czasownika_być}}
AutoIt
{{PobierzNumerArtykułu|Wstęp|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Analiza_matematyczna/Ciągi_liczbowe}}
------
-----
{{PobierzNumerArtykułu|Wzory|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_liceum/Wzory}}
----
{{PobierzNumerArtykułu|Świat geometrii|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Matematyka}}
----
----
{{PobierzNumerArtykułu|Środowisko projektowe|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Axiom/Środowisko projektowe}}
----
{{PobierzNumerArtykułu|Literatura|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_w_systemie_UNIX}}
----
{{PobierzNumerArtykułu|Definicja|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Onomastyka/Definicja}}
----
{{PobierzNumerArtykułu|Wymowa|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Arabski/Wymowa}}
----
{{PobierzNumerArtykułu|Opis_ruchu_(I)|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_gimnazjum/Opis_ruchu_(I)}}
</nowiki>
9e4hmhlk0z4tgqivcfv98nvj505jq1o
544665
544662
2026-05-30T01:21:34Z
Persino
2851
544665
wikitext
text/x-wiki
[[/Okładka/|Okładka]]
[[/Okładka/]], [[w:Wstęp]]
Spis Rzeczys:
[[/Wstęp/|Wstęp]]
[[/Okładka/]]
----
{{PobierzNumerArtykułu|Wstęp do liczb zespolonych|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Liczby_zespolone}}
-----
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Persino/brudnopis6/Wstęp}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=User|nazwa jednostki=Egon~plwikibooks/Brudnopis}}
{{PobierzNumerArtykułu|Wstęp|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_komputerów}}
{{PobierzNumerArtykułu|Streszczenie|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Wstępna_charakterystyka_bakteriofaga_Serratia_φOS10/Streszczenie}}
-----
{{PobierzNumerArtykułu|Lekcja_1-021|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Pisownia_Wschodniej_Azji/Lekcja_1-02}}
-----
{{PobierzNumerArtykułu|O_języku|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=D/O_języku}}
-----
{{PobierzNumerArtykułu|Sosnowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Siewki_roślin_flory_Polski/Sosnowate}}
-----
{{PobierzNumerArtykułu|Widłakowate|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Atlas_flory_Polski/Widłakowate}}
-----
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Processing/Jak_uruchomić_Processing}}
AutoIt
{{PobierzNumerArtykułu|Jak_uruchomić_Processing|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=AutoIt}}
AutoIt
{{PobierzNumerArtykułu|Odmiana_czasownika_być|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fiński/Odmiana_czasownika_być}}
AutoIt
{{PobierzNumerArtykułu|Wstęp|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Analiza_matematyczna/Ciągi_liczbowe}}
------
-----
{{PobierzNumerArtykułu|Wzory|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_liceum/Wzory}}
----
{{PobierzNumerArtykułu|Świat geometrii|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=Wikijunior|nazwa jednostki=Matematyka}}
----
----
{{PobierzNumerArtykułu|Środowisko projektowe|dane=3|poziomowo=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Axiom/Środowisko projektowe}}
----
{{PobierzNumerArtykułu|Literatura|dane=3|który=2|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Programowanie_w_systemie_UNIX}}
----
{{PobierzNumerArtykułu|Definicja|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Onomastyka/Definicja}}
----
{{PobierzNumerArtykułu|Wymowa|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Arabski/Wymowa}}
----
{{PobierzNumerArtykułu|Opis_ruchu_(I)|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Fizyka_dla_gimnazjum/Opis_ruchu_(I)}}
3e10v3n0i05lb6zpv1b2x08r1i0whsk
Wikibooks:Moduły/StronicowyParser/SpisTreści
4
63522
544614
544612
2026-05-29T12:49:02Z
Persino
2851
/* Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach */
544614
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
------ Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świaadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2],
---- Początek elementów alternatywnych dla przekierowania
tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,
((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,
---- lub
nil,
nil,
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3],
tab_pozycja_elementow_w_spisie_rzeczy[4],
tab_pozycja_elementow_w_spisie_rzeczy[5],
ile_dodac_do_poziomu_artykulu_lub_nil,
tab_pozycja_elementow_w_spisie_rzeczy[6],
},
------ lub
tab_pozycja_elementow_w_spisie_rzeczy[1],
------ lub
{
nazwa_jednostki, -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świaadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
------ Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false,
true/false,
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow),
---- lub
nil,
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
drande0jza9bcmoldd6mixk9jncyzny
544617
544614
2026-05-29T13:59:29Z
Persino
2851
/* Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach */
544617
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
------ Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/false/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma pink do ieistniejącej strony do innego artykułu;
true/false/nil, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie, -- true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3],
tab_pozycja_elementow_w_spisie_rzeczy[4],
tab_pozycja_elementow_w_spisie_rzeczy[5],
ile_dodac_do_poziomu_artykulu_lub_nil,
tab_pozycja_elementow_w_spisie_rzeczy[6],
},
------ lub
tab_pozycja_elementow_w_spisie_rzeczy[1],
------ lub
{
nazwa_jednostki, -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
------ Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false,
true/false,
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow),
---- lub
nil,
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4975bp4ia45493u3gdt86ghhmd8gjg9
544618
544617
2026-05-29T14:06:57Z
Persino
2851
/* Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach */
544618
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
------ Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/false/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma pink do ieistniejącej strony do innego artykułu;
true/false/nil, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie, -- true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil,
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
------ lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
------ lub
{
nazwa_jednostki, -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
------ Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/false,
true/false,
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow),
---- lub
nil,
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nb7673ptrc3f7dlxj9ho76650ws8zq9
544619
544618
2026-05-29T14:12:15Z
Persino
2851
/* Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach */
544619
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
------ Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/false/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma pink do ieistniejącej strony do innego artykułu;
true/false/nil, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie, -- true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil,
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
------ lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
------ lub
{
nazwa_jednostki, -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
------ Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6l6uo4rp1trag90u16ryy73w53cl7oc
544620
544619
2026-05-29T14:15:19Z
Persino
2851
/* Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach */
544620
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
------ Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/false/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma pink do ieistniejącej strony do innego artykułu;
true/false/nil, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie, -- true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden, lub: nil, gdy nic;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
------ lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
------ lub
{
nazwa_jednostki, -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
------ Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nku5tvu70qdckf4t4fr7kxmsn4cwpzi
544621
544620
2026-05-29T14:28:06Z
Persino
2851
/* Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach */
544621
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
------ Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/false/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden, lub: nil, gdy nic;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
------ lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
------ lub
{
nazwa_jednostki, -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
------ Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7s8einu3tr3b72ru8mjgcgcmi0lp8iv
544622
544621
2026-05-29T14:31:44Z
Persino
2851
/* Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach */
544622
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
------ Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden, lub: nil, gdy nic;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
------ lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
------ lub
{
nazwa_jednostki, -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
------ Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ov1rq59dw14pbkapsnh38y7yqgdgvpe
544627
544622
2026-05-29T14:50:49Z
Persino
2851
/* Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach */
544627
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
------ Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden, lub: nil, gdy nic;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
------ lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
------ lub
{
nazwa_jednostki, -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
------ Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
s6vzlh42rrgy0hwd0niiluuiqkic5q0
544628
544627
2026-05-29T15:05:00Z
Persino
2851
/* Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach */
544628
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden, lub: nil, gdy nic;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
nazwa_jednostki, -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jy91nw9bzfssblc9keib8jpc915qzf7
544629
544628
2026-05-29T15:09:11Z
Persino
2851
/* Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach */
544629
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
nazwa_jednostki, -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4xmv1lb1l7d9e3alreudow8g5x7y89g
544630
544629
2026-05-29T15:11:20Z
Persino
2851
544630
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
aj7u9wjhoyuftco0za4ox3i3gank2hq
544631
544630
2026-05-29T15:25:54Z
Persino
2851
/* Tworzenie tablicy: {{LinkPatrz|tablica_artykulow_zebranych}} */
544631
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}}, czyli: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
i29csy1tg5dcsuyqiqiiwqy7c0utk03
544632
544631
2026-05-29T15:27:40Z
Persino
2851
/* Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, czyli: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} */
544632
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}}, czyli: {{LinkPatrz|tablica_artykulow_zebranych}} ======
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2ocmqnipor9b5h5mouvhekl28zaj6cm
544633
544632
2026-05-29T15:29:25Z
Persino
2851
/* Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}}, czyli: {{LinkPatrz|tablica_artykulow_zebranych}} */
544633
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia aryykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pi1sck0dt8i9l60oc1ahelnmrm2t3u5
544634
544633
2026-05-29T15:42:57Z
Persino
2851
/* Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} */
544634
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia artykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6konqtylfgpkbt9my5yd1jbt9b36s8t
544635
544634
2026-05-29T15:46:04Z
Persino
2851
/* {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} */
544635
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia artykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawqdzane, czy jest tablicą w{{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z parametrem początkowym:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gmujnwexswacete4g38b4q565c71x12
544636
544635
2026-05-29T15:57:23Z
Persino
2851
/* Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} */
544636
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej tworzymy tabelę:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy ksiązka przyjmuje atrybut: '''czy inna''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia artykuł, którego przekierowanie kieruje, wtedy, ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na aktualną stronę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}. Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach jest tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku tworzenia tej tablicy.
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
evmky0a623m36o9dwuih4rrwjaz8oyi
544637
544636
2026-05-29T16:08:24Z
Persino
2851
/* Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} */
544637
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej tworzymy tabelę:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}.
Gdy element nie jest tablicą, to tworzona jest nazwa pełna artykułu i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia.
Gdy element jest tablicą, też jest liczona pełna nazwa artykułu z tą samą tablicą, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6yo8u1hlscngzm8neiqe58yms5afa4i
544638
544637
2026-05-29T16:22:31Z
Persino
2851
/* Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} */
544638
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej tworzymy tabelę:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a zniej liczymy tablicę {{LinkPatrz|}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9k2jcmvqwr2jlau4hbja0qhgppp6jc0
544639
544638
2026-05-29T16:24:32Z
Persino
2851
544639
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej tworzymy tabelę:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2jcsrb7kgzksc5o94qqwjjzq4q1skq6
544640
544639
2026-05-29T16:30:09Z
Persino
2851
/* Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} */
544640
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej tworzymy tabelę:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie przednim nie ma.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
resypxpabmixckxmuilp1pwy0xc8l0j
544641
544640
2026-05-29T16:35:56Z
Persino
2851
/* Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} */
544641
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej tworzymy tabelę:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i iniconujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
amruwb0ozx29mxmk579sra44hmthtm4
544642
544641
2026-05-29T16:37:20Z
Persino
2851
/* {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów */
544642
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej tworzymy tabelę:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4x2df9frgg4671nawzolckf6bpq8g2n
544643
544642
2026-05-29T17:23:47Z
Persino
2851
/* Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} */
544643
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
30vprngco6desrluuppxzxo6ga366o6
544644
544643
2026-05-29T17:25:35Z
Persino
2851
/* Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} */
544644
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hog4dts8tkmwe1x9758dix1ofxfhyap
544645
544644
2026-05-29T17:31:11Z
Persino
2851
/* Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} */
544645
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2c3x1mys6ly7ia27xzgutzimesdi87l
544646
544645
2026-05-29T17:38:50Z
Persino
2851
/* {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} */
544646
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7onvcdaotsr7ldyprl2ir2w788z7y32
544647
544646
2026-05-29T17:39:25Z
Persino
2851
/* {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} */
544647
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pbnx73qvh5piikamgnr52830zjdb9ax
544648
544647
2026-05-29T17:40:39Z
Persino
2851
/* {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} */
544648
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ojxktgofk0vot24bgh8izzhwqc42fsg
544649
544648
2026-05-29T19:01:44Z
Persino
2851
/* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */
544649
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - ten tekst tutułu rozdziału, o którym mówimy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu.
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4dd5ivgjsk89yxttw4wa15pdsxiu7aj
544650
544649
2026-05-29T19:11:17Z
Persino
2851
/* {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} */
544650
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - ten tekst tutułu rozdziału, o którym mówimy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu.
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pezg3617hbgcquy5o1ibahss18y2aia
544651
544650
2026-05-29T19:18:59Z
Persino
2851
/* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */
544651
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - ten tekst tutułu rozdziału, o którym mówimy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu.
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla {{Code|obiekt {{=}} "SZABLON"}}, używamy trzy tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też sluży do tego samego.
A trzecia tablica ma taką definicję, aby służyła do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze wgledu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stroicowy parser {{Code|{{ld2|StronicowyParser}}}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
lsdq1v2id8b3l82sm7oesnzb5ki40l4
544652
544651
2026-05-29T19:21:28Z
Persino
2851
/* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */
544652
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - ten tekst tutułu rozdziału, o którym mówimy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu.
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla {{Code|obiekt {{=}} "SZABLON"}}, używamy trzy tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też sluży do tego samego.
A trzecia tablica {{Patrz|szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}} ma taką definicję, aby służyła do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stroicowy parser {{Code|{{ld2|StronicowyParser}}}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cd23b7v3n57qp48sq2mopmag89ihal5
544653
544652
2026-05-29T19:22:38Z
Persino
2851
/* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */
544653
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - ten tekst tutułu rozdziału, o którym mówimy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu.
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla {{Code|obiekt {{=}} "SZABLON"}}, używamy trzy tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
A trzecia tablica {{Patrz|szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}} ma taką definicję, aby służyła do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stroicowy parser {{Code|{{ld2|StronicowyParser}}}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
c2bcze59n9dkipxa9l7k4kid8jhma0s
544654
544653
2026-05-29T19:24:49Z
Persino
2851
/* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */
544654
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - ten tekst tutułu rozdziału, o którym mówimy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu.
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla {{Code|obiekt {{=}} "SZABLON"}}, używamy trzy tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
A trzecia tablica {{Patrz|szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}} ma taką definicję, aby służyła do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser {{Code|{{ld2|StronicowyParser}}}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4jtvukqem0381fpe5pf9psqbksv2ygu
544655
544654
2026-05-29T19:28:38Z
Persino
2851
/* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */
544655
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu.
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla {{Code|obiekt {{=}} "SZABLON"}}, używamy trzy tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
A trzecia tablica {{Patrz|szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}} ma taką definicję, aby służyła do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser {{Code|{{ld2|StronicowyParser}}}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0dedlmg4zy7ulotg5lifq9qyt6hd3rc
544656
544655
2026-05-29T20:07:15Z
Persino
2851
/* {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} */
544656
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/SpisTreści}}|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 lokalne ==
=== {{Śródtytuł|Ile}}{{Code|Ile}} ===
Funkcja liczy liczbę elementów we wszystkich podtabelach tabeli {{Code|tabela_rozdzial_artykulow}}, licząc od drugiej tabeli, po pierwszej tabeli mieści się podtabela z informacjami o rozdziale, w której znajdują się artykuły określone dalszymi podtabelami. Tymi podtabelami są od {{Code|2}} do {{Code|7}}, czyli {{Code|6}} tabelek, w których są artykuły, które zaliczamy do kategorii wliczane, tzn. one nie znajdują się w takich rozdziałach przetłumaczonych na małą literę, ale przedtem na nią była działana funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, usuwając z nich odstępy na końcach, w tym dolne myślniki, a wewnątrz zamieniając kolejne dolne myślniki i spacje na jedną spacją, na podstawie metafunkcji: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}, w: {{Code|{{ld2|Parametry}}}}, aby porównać to z tablicą, by zaliczyć je do tego typu:
<syntaxhighlight lang="lua">
p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu={
["licencja"]=true,
["inne"]=true,
["bibliografia"]=true,
["zobacz też"]=true,
["linki zewnętrzne"]=true,
};
</syntaxhighlight>
A od {{Code|7}} do {{Code|13}} znajdują się podtabele z artykułami, które już należą już tam, czyli też drugie {{Code|6}}.
A ta powyższa tabela mieści się: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a jego opis w: {{Code|{{sr|#p.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|numer_rodzaju_artykulu}} - numer podtabeli elementtu, do którego wsadzamy element,
* {{Code|tabela_rozdzial_artykulow}} - tabela wraz podtabelami, od {{Code|1}} do {{Code|13}}, ale liczenie jest od {{Code|2}}
=== {{Śródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}{{Code|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}} ===
==== Opis pobieżny funkcji ====
Funkcja do wstawiania elementów z ogólnej tablicy: {{Code|tabela_rozdzial_artykulow}} {{Patrz|tabela_rozdzial_artykulow}}, za pomocą funkcji wstawianej jako parametr: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} {{Patrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, do odpowiedniej pozycji artykularnej od: {{Code|2}} do {{Code|13}}, a pozycja {{Code|1}}, to pozycja rozdziałowa, ona jest określana przez zmienną: {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} {{Patrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, a pozycja, którą wsadzamy to: {{Code|tab_stare}} {{Patrz|tab_stare}}.
Funkcja zwraca pozycje:
<syntaxhighlight lang="lua">
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
</syntaxhighlight>
Opis funkcji:
* {{Code|numer_rodzaju_artykulu_poprz}} {{Patrz|numer_rodzaju_artykulu_poprz}} - jest to wartość zwrócona przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}}, w odróżnieniu od: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}}, jest mniejszy o jeden, czyli wtedy to była a poziomie przypisywania wartość {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}},
* {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{Patrz|tab_pozycja_elementow_w_spisie_rzeczy}} - pierwsza artykularna zmienna zwrócona przez funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|tablica_artykulow_zebranych}} {{Patrz|tablica_artykulow_zebranych}} - tablica do sprawdzania, czy artykuł z nagłówkiem, ma powtórzenie tego bez nagłówka, czyli dla tego bez tego jest inna numeracja niż z nagłókiem, a gdy niema tego bez, to wtedy dzięki tej funkcjinumeracja tak się zachowuje, jaak tam by był ten element, co prawda jest tam dodawany, ale jako z informacją taką, że bz numeru ustalanym przez funkcję: {{LinkŚródtytuł|Ile}}, A przy okazji, aby tego elementu nie dodawać ponownie, to w nim jest ustalana druga zmienna na {{Code|1}}, a wcześniej była na {{Code|0}}, i dlatego ona była wtedy dodawana, a później już tak nie jest.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow --[[]])...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa funkcji, z pominięciem, której funkcję można napisać zamiast {{Code|p.}} {{Patrz|p.}} jako {{Code|p:}} {{Patrz|p:}},
* {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} - opis jest jak w: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}},
* {{Code|tabela_rozdzial_artykulow}} - ta tabela działa według opisu jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|tablica_artykulow_zebranych}} - działa jak w: {{LinkPatrz|tablica_artykulow_zebranych}},
* {{Code|wliczaj_artykuly_tego_rozdzialu}} {{Patrz|wliczaj_artykuly_tego_rozdzialu}} - jak przybiera odpowiadającą wartość fałszywą, to do: {{LinkPatrz|numer_rodzaju_artykulu}}, dodawane jest {{Code|6}},
* {{Code|szablon}} {{Patrz|szablon}} - jest to tekst zakodowany całego linku wewnętrznego, czy zewnętrznego, czy linku inteligentnego w postaci szablonu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki i nazwa książki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - jest to nazwa artykułu danego spisu treści,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony, gdzie są rozwijane adresy względne stron, poczytaj: {{lr2|Moduły/StronicowyParser/Rozdziały}} {{Patrz|Moduły/StronicowyParser/Rozdziały}},
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - uchwyt do tablicy bazy kodowania zapisany w samej bazie dla danego artykułu, używany zamiast:{{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy zapisana w postaci osobnej tablicy, a nie jej w wewnętrznej bazie, nie jak to było w postaci zmiennej {{LinkPatrz|nazwa_modulu}}, używana zamiast: {{LinkPatrz|nazwa_modulu}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń zmiennej {{Code|szablon}}, dla zmiennych szablonowych, i dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}},
* {{Code|obiekt}} {{Patrz|obiekt}} i {{Code|kod}} {{Patrz|kod}} - obiekt i kod, czyli: zmienne charakteryzujące zmienną: {{LinkPatrz|szablon}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica przekierować, aby nie rozpatrywać tego samego przekierowania wiele razy,
* {{Code|przedrostek_listy}} {{Patrz|przedrostek_listy}} - tekstowy przedrostek listy z przedziału znaków: {{Code|<nowiki>[;%*:#]+</nowiki>}} {{Patrz|wzor_do_linii_z_lista}}, rozpoczynających pojedyncza linię,
* {{Code|tekstowy_przedrostek}} {{Patrz|tekstowy_przedrostek}} - numeracja rozdziału, z jakim rozpoczyna się rozdział,
* {{Code|w_rozdziale}} {{Patrz|w_rozdziale}}} - gdy link znajduje się w rozdziale dodatnim,
* {{Code|linia_artykokow}} {{Patrz|linia_artykokow}} - cała linia z artykułem lub artykułami, tą linią równie dobrze może być rozdział, tu chodzi o rozdział dodatni.
==== Opis pobieżny funkcji {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}} ====
Przedstawiamy tutaj funkcję: {{Code|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, która jest opisana w punnkcie: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Definicja funkcji w nagłówku:
<syntaxhighlight lang="lua">
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_rozdzial_artykulow}} - jak w: {{LinkPatrz|tabela_rozdzial_artykulow}},
* {{Code|numer_rodzaju_artykulow_w_nie_podreczniku}} - jak w: {{LinkPatrz|numer_rodzaju_artykulow_w_nie_podreczniku}},
* {{Code|tab_stare}} - jak w: {{LinkPatrz|tab_stare}}.
Ta funkcja została opisana już wcześniej.
==== Szczegółowy opis funkcji głównej ====
Uruchamiamy funkcję {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, która jest zddefiniowana w module: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}. Wywołujemy tę funkcję:
<syntaxhighlight lang="lua">
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
Pierwszy elementem {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}} jest to zmienna tablicowa, która opisuje parametry artykularno-linkowe parametry, drugi {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, do której kategorii należy dany artykuł w linku, a trzeci parametr, to {{Code|id}} {{Patrz|id}}, to zbierane są parametry linkowe z szablonu {{s|SpisTreści}}, czwarty to {{Code|parametry_szablonu}} {{Patrz|parametry_szablonu}}, w przypadku szablonów inteligentnych linków, to są parametry wywołań tych szablonów, ostatni parametr to {{Code|kom}} {{Patrz|kom}}, przedstawia on, jeśli {{Code|false}}, to artykuł zakwalifikowany zoistał poprawnie do rozważań, a {{Code|true}} już nie.
To {{LinkPatrz|parametry szablonu}}, to jest tablica z trzech elementów, tzn.:
<syntaxhighlight lang="lua">
local parametry szablonu={tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,};
</syntaxhighlight>
Elementy tablicy:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tablica parametrów uzyskanych z argumentów, i ich wartości, nazwanych i nienazwanych,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - to jest nazwa uzyskanego szablonu linków inteligentnych lub nie,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela modyfikatorów rozkładanego szablonu.
Jeśli parametr: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, istnieje, to tworzona jest z niego taka sama wersja lub przy nieistnnieniu parametru {{LinkPatrz|wliczaj_artykuly_tego_rozdzialu}}, do niego jest dodawana jest liczba {{Code|6}}. W ten sposób możemy zbierać artykuły książki i inne,ktore należą do pewnych rozdziałów i które nie należą.
===== {{Śródtytuł|ParametrPierwszy}}{{Code|ParametrPierwszy}} =====
Funkcja zbierające dane z {{Code|tab_artykul}} {{Patrz|tab_artykul}}, którego to jest czteroelementowa tablica, dotycząca danego artykułu. Drugim parametrem {{Code|czy_niedozwolone}} {{Patrz|czy_niedozwolone}} jest zmienna logiczna mówiąca, czy wskazać w nazwie artykułu, czy są dozwolone znaki, jest to sprawdzenie według wyrażenia regularnego: {{Code|<nowiki>[|<>{}%[%]]</nowiki>}} {{Patrz|wzor_znaki_niedozwolone}} na podstawie funkcji {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.ustring.match|n=mw.ustring.match}}}}, czyli: {{Code|znaki_niedozwolone}} {{Patrz|znaki_niedozwolone}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
ParametrPierwszy(tab_artykul,czy_niedozwolone)...end;
</syntaxhighlight>
Parametry fubkcji:
* {{Code|tab_artykul}} - jak w: {{LinkPatrz|tab_artykul}},
* {{Code|czy_niedozwolone}} - jak w: {{LinkPatrz|czy_niedozwolone}}.
Gdzie {{LinkPatrz|tab_artykul}}, który jest pierwszym parametrem przyjmowanym przez funkcję, jest zdefiniowany jako czteroelementowa tablica, którą przypisujemy do czterem osobnych parametrów:
<syntaxhighlight lang="lua">
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
</syntaxhighlight>
Jeżżeli, któreś z parametrów z {{LinkPatrz|tab_artykul}}, tzn. element jego {{Code|2}}-gi i {{Code|3}}-ci, istnieje, to układana jest trzyelementowa tablica z elementów od {{Code|1}} do {{Code|3}}, z dodatkowym elementem {{Code|<nowiki>["LINK"] = true</nowiki>}}, a element czwraty to jest {{Code|tablica_przekierowania}} {{Patrz|tablica_przekierowania}}, a jeżeli te dwa elementy, nie licząc czwartego, wcale nie istnieją, wtedy jest tworzony łańcuch znakowy z tego pierwszego elementu. Tak tworzymy, nową wersję tablicy {{Code|tab_artykul}} {{Patrz|tab_artykul-nowa wersja}} lub łańcuch znakowy, w postaci:
<syntaxhighlight lang="lua">
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
</syntaxhighlight>
Funkcja zwraca trzy parametry, tzn. parametry: {{LinkPatrz|tab_artykul-nowa wersja}}, {{LinkPatrz|znaki_niedozwolone}} i tablicę przekierowania {{LinkPatrz|tablica_przekierowania}}, co skrótowo piszemy: {{Patrz|zwracane-ParametrPierwszy}}:
<syntaxhighlight lang="lua">
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
</syntaxhighlight>
===== {{Śródtytuł|RozwijanieNazwy}}{{Code|RozwijanieNazwy}} =====
Szablon służy do rozwijania nazwy szablonu, zamienia nowe linie szablonowe {{s|Br}} i znacznikowe {{Tag|br|pojedynczy}}, na pojedynczą spację.
Szablon wykorzystuje tablice szablonów korekt umieszczonych w nazwie linku, czy to normalnego, czy szablonowego (inteligentnego), którego definicja {{Patrz|szablony_dozwolone_w_nazwach_linkowych}}:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_nazwach_linkowych={
["Korekta"] =2,
};
</syntaxhighlight>
Do tego celu używa on funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}, aby szablony w tej tablicy zastąpić odpowiednimi parametrami, którego nazwy, czy numery są oddzielone średnikami, lub nie, ale nazwy są ich w postaci pojedynczej liczby.
Szablon również uwzględnia szablony rozwijane przez '''JavaScript''', tzn. tabelę:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_nazwowe_linkowe={
};
</syntaxhighlight>
W tym przypadku szablony są kompletowane do postaci pojedynczego wywołania, które może być w przyszłości rozwinięte, np. przez ten język.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwijanieNazwy(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja jedynie nie rozwija funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|n=frame:preprocess}}}}, szablonów stronicowego parsera, podane podkategoriach w kategorii: {{Code|{{lk2|Szablony stronicowe}}}}, za pomocą odpowiednich metod.
==== Dalszy opis funkcji przy istnieniu parametrów linkowych normalnych, czy szablonowych (linków inteligentnych) ====
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|{{=}}}} {{Code|1}} =====
Tworzony jest numerek {{Code|numer_rodzaju_artykulu_w_podreczniku}} {{Patrz|numer_rodzaju_artykulu_w_podreczniku}}, który w stosunku do: {{LinkPatrz|numer_rodzaju_artykulu}}, jest większy o jeden, a schemat tej operacji:
<syntaxhighlight lang="lua">
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
</syntaxhighlight>
====== Tworzenie tablicy: {{Code|tablica_artykulow_zebranych}} ======
Opiszemy tutaj tablicę: {{Code|tablica_artykulow_zebranych}}, opisaną wstępnie w punkcie: {{LinkPatrz|tablica_artykulow_zebranych}}.
; Tablica {{Code|tab_pozycja_elementow_w_spisie_rzeczy}} nie jest tablicą
Gdy element pierwszy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, nie jest tablicą, wtedy jedynie liczymy, czy ona ma znaki niedozwolone {{LinkPatrz|wzor_znaki_niedozwolone}}, a póżniej wiedząc ten element, który jest aktualną nazwą artykułu kiążki, tworzymy tabelę {{Patrz|tablica_artykulow_zebranych-imicjacja}}:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
</syntaxhighlight>
; Przeciwny przypadek
Wpierw liczone są parametry z wywołania, z opcją, czy ma liczyć, czy nazwa artykułu ma znaki niedozwolone, z funkcji: {{LinkŚródtytuł|ParametrPierwszy}}:
<syntaxhighlight lang="lua">
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
</syntaxhighlight>
Dalej sprawdzane jest, czy książka przyjmuje atrybut, tzn.: '''czy inna książka''', wtedy liczymy to z kodu z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, jeżeli jej wartość istnieje, tzn. {{Code|czy_inna_ksiazka}} {{Patrz|czy_inna_ksiazka}}:
<syntaxhighlight lang="lua">
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
</syntaxhighlight>
Element: {{Code|<nowiki>[1][5]</nowiki>}}, to jest element tablicy {{LinkPatrz|tablica_przekierowania}}, który przedstawia, czy to jest artykuł bieżącej książki, którego przekierowanie kieruje, wtedy ten parametr ma wartość {{Code|true}}, a gdy adres przekierowania wskazuje na inną książkę, wtedy {{Code|false}}. Jeśli ten parametr ma wartość fałszywą, wtedy jest sprawdzane, czy jest tablicą w {{Code|czy_tablica}} {{Patrz|czy_tablica}}, według:
<syntaxhighlight lang="lua">
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
</syntaxhighlight>
Lub w przeciwnym wypadku liczymy parametry artykularne z tablicy przekierowania: {{LinkPatrz|tablica_przekierowania}}, a jeżeli parametry lub nagłówek przekierowania, w tej tablicy, istnieje, wtedy parametr {{LinkPatrz|czy_tablica}} przyjmuje wartość {{Code|true}}, w przeciwnym wypadku wartość fałszywą.
Gdy ten element nie jest tablicą, to tworzona jest nazwa pełna artykułu: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} i umieszczana w tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, w sposób, co dalej jest tworzona w dalszych operacjach tablica: {{LinkPatrz|tablica_artykulow_zebranych}}, z podobną tablicą początkową jak w poprzednim przypadku jego tworzenia, czyli jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}.
Gdy element jest jednak tablicą, też jest liczona pełna nazwa artykułu (gdy nazwa artykułu przekierowania istnieje, wtedy ona jest liczona z: {{Code|tablica_przekierowania[2]}}, w przeciwnym wypadku, jeśli element {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}} jest tablicą, wtedy liczymy ją z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1][1]}}, w innym wypadku z: {{Code|tab_pozycja_elementow_w_spisie_rzeczy[1]}}), a z niej liczymy tablicę {{LinkPatrz|tablica_artykulow_zebranych}}, jak w: {{LinkPatrz|tablica_artykulow_zebranych-imicjacja}}, w przypadku pierwszego artykułu nienagłówkowego, lub pierwszego artykułu, który może być tylko z nagłówkiem, bo tego bez, w spisie, artykuł poprzedni nie jest tym artykułem bez niego, a więc tego tam nie ma tam w takim przypadku.
Gdy funkcja napotkała artykuł o takim samym stronie, co poprzednio, to do wartości początkowej, bez defininiowania jeszcze raz tej samej tablicy, jest ustawiane odpowiednio:
<syntaxhighlight lang="lua">
tablica_artykulow_zebranych[3]=true;
</syntaxhighlight>
Co informuje, że następny artykuł jest ten sam, tylko inny nagłówek lub jest tym razem z nagłówkiem, a poprzedni bez.
====== Rozwijanie nazwy linku ======
Kompletowany jest drugi element tablicy {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, rozwijając szablony w nim względem funkcji: {{LinkŚródtytuł|RozwijanieNazwy}}. Dalej z tej nazwy są usuwane znaki specjalne według funkcji: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, z modułu: {{Code|{{ld2|Specjalne}}}}. Następnie działamy funkcją: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, które końcowe spacje usuwa, a wewnętrz powtarzające zamienia kolejne na jedną spację.
====== Dodawanie do tablicy problemów, jeśli nastąpił problem ze znakami niedozwolonymi ======
A między czasie, gdy mamy niedozwolone znaki: {{LinkPatrz|znaki_niedozwolone}}, za pomocą funkcji pytającej sprawdzamy, czy element inny zgłoszeniowy został dodany do tablicy problemów: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, aż w końcu dodajemy ten problem, jeśli go nie ma przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
====== {{Śródtytuł|inicjacja_i_kompletowanie_zmiennych}}Ustalanie nazwy jednostki, kompletowanie linii artykułów i inicjowanie pozycji, w tabeli zebranych elementów, w tabeli zebranych elementów ======
Ustalamy nazwę jednostki z funkcji: {{Code|{{sr|#p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem|p=StronicowyParser/Potrzebne}}}}, i inicjujemy tą wartością, czyli {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, wartość starą: {{Code|stara_nazwa_jednostki}} {{Patrz|stara_nazwa_jednostki}}, według:
<syntaxhighlight lang="lua">
---- Piszanie pełnej nazwy jednostki bez parametrów i nagłówka;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
---- Inicjowanie starej wartości tą policzoną;
local stara_nazwa_jednostki=nazwa_jednostki;
</syntaxhighlight>
Dalej {{Śródtekst|uchwyt=tabela_rozdzial_artykulow|tekst=inicjujemy pozycję, jeżeli nie istnieje taka, na podstawie policzonej wartości: {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}}, w tablicy: {{LinkPatrz|tabela_rozdzial_artykulow}}}}, według:
<syntaxhighlight lang="lua">
if(not tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow[numer_rodzaju_artykulu_w_podreczniku]={};end;
</syntaxhighlight>
Co {{Śródtekst|uchwyt=linia_artykokow|tekst=dalej linię artykułów {{Code|linia_artykokow}} {{LinkPatrz|linia_artykokow}}, kompletujemy, funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, z modułu: {{Code|{{ld2|Szablonowe}}}}, znając tablicę: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}}}, według:
<syntaxhighlight lang="lua">
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
====== Uwzględnianie niepodanego elementu nienagłówkowego w tablicy zebranych parametrów ======
Gdy tablica przekierowania {{LinkPatrz|tablica_przekierowania}} istnieje, wtedy sprawdzamy czy zmienna logiczna {{LinkPatrz|czy_tablica}} jest prawdą i czy {{LinkPatrz|stara_nazwa_jednostki}}, czy jest nie pusta, w takim razie jej element {{Code|2}} przydzielany jest do zmiennej {{Code|przekierowanie}} {{Patrz|przekierowanie}}, czyli nazwie artykułu przekierowania.
Inicjujemy nową zmienną {{Code|przekierowanie}} {{LinkPatrz|przekierowanie}} z artykułu, parametrów i nagłówka, ale wpierw sprawdzamy, czy dwa ostatnie istnieją, według:
<syntaxhighlight lang="lua">
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4]) and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}or przekierowanie) or nil;
</syntaxhighlight>
Tworzony jest nowy element {{Code|nazwa jednostki}} {{Patrz|nazwajednostki-nowy}} z {{LinkPatrz|nazwa jednostki}}, parametrów i nagłówka, według rysu:
<syntaxhighlight lang="lua">
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
</syntaxhighlight>
Jeżeli parametr drugi {{LinkPatrz|tablica_artykulow_zebranych}}, a trzeci jej jest {{Code|false}}, wtedy kreujemy tablicę: {{LinkPatrz|tab_stare}}.
Wsadzamy element {{LinkPatrz|tab_stare}} do zbioru {{LinkPatrz|tablica_artykulow_zebranych}} przy pomocy funkcji: {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.
Następnie jej drugiemu elementowi {{LinkPatrz|tablica_artykulow_zebranych}} dawana jest wartość {{Code|1}}, aby nie dało się ponownie tworzyć i wsadzać element {{LinkPatrz|tab_stare}}, do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} według funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}, odpowiedzialny za artykuł nienagłówkowy, ktorego nie ma w spisach treści książki, ale są one w wersji nagłówkowej.
Jeżeli tablica przekierowania {{LinkPatrz|tablica_przekierowania}} jednak nie istnieje, wtedy tak samo sprawdzamy, co poprzednio potem, ale po spełnieniu tych warunków robimy inną tablicą {{LinkPatrz|tab_stare}}, i tę tablicę robimy podobnie, i inicjujemy te same elementy też podobnie.
====== Uwzględnianie pozycji podanej w tablicy zebranych elementów ======
Tworzymy zmienną {{Code|ile_dodac_do_poziomu_artykulu}} {{Patrz|ile_dodac_do_poziomu_artykulu}} z drugiego elementu tablicy {{LinkPatrz|tablica_artykulow_zebranych}}, następnię tworzymy inną zmienną {{Code|ile_dodac_do_poziomu_artykulu_lub_nil}} {{Patrz|ile_dodac_do_poziomu_artykulu_lub_nil}}, co uwidaczniamy wzorem:
<syntaxhighlight lang="lua">
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
</syntaxhighlight>
Tą zmienną wykorzystamy do sformułowania {{LinkPatrz|tab_stare}}. {{Śródtekst|tekst=Tworzymy zmienną {{LinkPatrz|tab_stare}}, którą wsadzamy do tablicy {{LinkPatrz|tabela_rozdzial_artykulow}} na pozycji {{LinkPatrz|numer_rodzaju_artykulu_w_podreczniku}} przy pomocy funkcji {{LinkPatrz|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}.|uchwyt=__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
===== Gdy: {{Code|numer_rodzaju_artykulu_poprz}} {{Code|>{{=}}}} {{Code|2}} =====
Będziemy tutaj operowali, gdy parametr drugi zwracany z funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, wskazuje na nie artykuł książki, zatem ten rozdział jest właśnie dla tego przypadku.
====== Odkodowanie i przygotowanie zmiennych artykułu linku, jej nazwy, także kodu języka i projektu ======
* Gdy pierwszy element tablicy: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, jest tabelką, wtedy do przetworzenia jego wykorzystujemy funkcję: {{LinkŚródtytuł|ParametrPierwszy}}.
* Dla drugiego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, co jest nazwą linku, wtedy gdy nazwa linku normalnego, czy szablonowego, jest zakodowana, to ją odkodujemy, którego każdy jego element kod odkodujemy według fukcji: {{LinkŚródtytuł|RozwijanieNazwy}}, następnie z niej usuwamy znaki specjalne według: {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, następnie usuwamy końcowe spacje i wewnątrz kolejne spacje zaastępujemy jedną spacją, co robimy według: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
* Dla trzeciego i czwartego takiego elementu z: {{LinkPatrz|tab_pozycja_elementow_w_spisie_rzeczy}}, te elementy odkodujemy, następnie z nich usuwamy końcowe spacje, a wewnątrz kolejne spacje zastępujemy jedną, według tej samej funkcji, co powyżej.
====== Przygotowanie zmiennych, inicjowanie tablicy {{Code|tab_stare}} i wsadzanie jej do tablicy ogólnej {{Code|tabela_rozdzial_artykulow}} ======
Dalej {{PobierzŚródtekst|tabela_rozdzial_artykulow}}, także co {{PobierzŚródtekst|linia_artykokow}}, co wszystko robimy podobnie jak w rozdziale: {{LinkŚródtytuł|inicjacja_i_kompletowanie_zmiennych}}.
{{PobierzŚródtekst|__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY}}
==== Definicja tablicy: {{Code|tab_stare}}, inicjowanie jej elementów w różnych przypadkach ====
Przedstawiamy tutaj ogólną definicję zmiennej {{LinkPatrz|tab_stare}}, które określają ogólnie jaką jego wersję użyć w poszczególnych punktach funkcji: {{LinkŚródtytuł|WstawianieElementowychZarejestrowanychStronDoBazyWoluminu}}. Jej wersja ogólna:
<syntaxhighlight lang="lua">
local tab_stare=
{
---- Początek elementów alternatywnych
{
---- Początek wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[1], -- artykuł bez pełnej nazwy ksiązki, bez parametrów i nagłówka, bo ich nie posiadałna samym początku;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- artykuł bez pełnej nazwy książki, bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec wersji dla artykułu
tab_pozycja_elementow_w_spisie_rzeczy[2], -- nazwa linku artykułu normalnego, czy szablonowego;
---- Początek elementów alternatywnych dla przekierowania
---- Poczatek parametrów przekierowania
{
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
tablica_przekierowania[3], -- parametry przekierowania artykułu;
tablica_przekierowania[4], -- nagłówek przekierowania artykułu;
["LINK"]=true, -- zmienna świadcząca, że nazwa przekierowania artykułu jest z parametrami i nagłówkiem;
},
---- lub
tablica_przekierowania[2], -- nazwa przekierowania artykułu;
---- Koniec parametrów przekierowania
tablica_przekierowania[1], -- tablica o definicji: {
nazwa_przestrzeni_strony_przekierowania, -- nazwa przestrzzeni nazw przekierowania artykułu;
nazwa_przestrzeni_ksiazki_strony_przekierowania, -- nazwa przestrzeni książki przekierowania artykułu;
nazwa_ksiazki_strony_przekierowania, -- nazwa książki orzekierowania artykułu;
true/nil, -- nil, gdy strona jest przekierowaniem, true, gdy strona główna jest taka, lub strona ma link do nieistniejącej strony w innej książce;
true/false, -- true, gdy przekierowanie wskazuje na artykuł w taj samej książce, false, gdy nie;
czy_przekierowanie), -- (true/false): true, gdy strona jest przekierowaniem, false jak nie, to strona główna książki, nil, w przeciwnym wypadkach;
};
---- lub
nil, -- dotycząca przekierowania artykułu, a tutaj strona nie ma przekierowania, więc: nil;
nil, -- dotycząca tablicy książki, na którą wskazuje przekierowanie, a tutaj nie ma tablicy, więc: nil;
---- Koniec elementów alternatywnych dla przekierowania
tab_pozycja_elementow_w_spisie_rzeczy[3], -- kod języka;
tab_pozycja_elementow_w_spisie_rzeczy[4], -- kod projektu;
tab_pozycja_elementow_w_spisie_rzeczy[5], -- adres artykułu bez przetworzenia w linku normalnym,czy szablonowym;
ile_dodac_do_poziomu_artykulu_lub_nil, -- parametr mający tylko wartości: 1, gdy do aktualnego poziomu musi być dodane jeden - ta wartość, tylko dotyczy artykułów należących do tej samej książki, lub: nil, gdy nic, czyli w pozostałych przypadkach;
tab_pozycja_elementow_w_spisie_rzeczy[6], -- "url", pozycja świadcząca, że to jest link zewnętrzny, a nil, gdy to jest normalny link;
},
---- lub
tab_pozycja_elementow_w_spisie_rzeczy[1], -- nazwa artykułu linku, która nie posiada, ani parametrów w sobie, a po nim nagłówka, lub bezpośrednio po nazwie;
---- lub
{
tab_pozycja_elementow_w_spisie_rzeczy[1][1], -- nazwa artykułu bez parametrów i nagłówka;
tab_pozycja_elementow_w_spisie_rzeczy[1][2], -- parametry artykułu, z którym on został wywołany w linku;
tab_pozycja_elementow_w_spisie_rzeczy[1][3], -- nagłówek strony, wstawiany po parametrach lub nazwie strony;
["LINK"]=true, -- zmienna świadcząca, że nazwa artykułu jest z parametrami i nagłówkiem;
},
---- Koniec elementów alternatywnych
{
#przedrostek_listy, -- poziom listy, w którym jest artykuł, dla artykułów w linii z listą;
przedrostek_listy, -- przedrostek listy w postaci wzoru, który jest w nawiasie we wzorze do przechwytywaniem: "\n([;%*:#])";
tekstowy_przedrostek, -- numeracja dodatkowa w rozdziale dla artykułu;
w_rozdziale, -- czy artykuł jest w rozdziale dodatnim normalnym, czy centrowanym znacznikowym lub szablonowym;
},
linia_artykokow, -- skompletowana linia z artykułem, dla którego jest pozycja: "tab_stare";
true/nil, -- true, gdy nazwa artykułu pochodzi bezpośrednio od szablonu {{SpisTreści}}, a w przeciwnym wypadku ma wartość: nil;
true/false, -- true, gdy artykuł pochodzi z tego samego podręcznika;
---- Początek elementów alternaatywnych
Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow), -- który numer artykułu, w momencie wsadzenia do tabeli zbierania rozdziałów i w nich artykułów, nawet w rozdziale;
---- lub
nil, -- nil, wtedy gdy link jest tak sobie dodany, który nie należy do żadnego spisu, a po nim elementy jego z nagłówkiem natomiast należą;
---- Koniec elementów alternatywnych
};
</syntaxhighlight>
W powyższym {{Tag|syntaxhighlight|parametry=lang="lua"}}, dla elementu {{Code|<nowiki>---- lub</nowiki>}}, jest powiedziane, że są dostępne alternatywy, które są zawarte w tablicy, że wybieramy te, aby nie spowodować czysto podwójnej tablicy, aby każda tablica zawierały inne elementy, jak wiele, a nie jedną tablicę, jak i łańcuchy znaków, wartość nil, powoduje, że czy ma być taka tablica, ale nie podwójna, co to znaczy podowójna, tzn. tablica w sobie zawiera inną jedyną tablicę, a tak nie może być, a jak zawiera jedną tablicę, to musi posiadać inne nienilowe elementy.
== Funkcje tablicy transportu ==
=== {{Code|p.AnalizaNapisuWprowadzeniaTekstu}} ===
Funkcja przyjmuje jako parametr nieskompletowaną i nieprzetworzony tekst napisu wprowadzenia tekstu. On kompletujei przekształca go w odpowiedni sposób,aby otrzymać czysty tekst tytułu rozdziału.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - ten tekst tytułu rozdziału, o którym mówimy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu treści, potrzebna do rozwijania adresów względnych,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy modułu {{Code|{{ld2|Szablonowe}}}}, która zawiera informacje na temat zakodowanego tekstu, calego artykułu, w tym również tych napisów,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica rozłożeń elementów składowych bazy szabonów i znaczników, i ewentualnie innych, elementów zbazowanego tekstu.
Funkcja korzysta z funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, funkcja ma zdefiniowaną pierwszą jej funkcję, która dla {{Code|obiekt {{=}} "SZABLON"}}, używamy trzy tabelę, te tabele:
Pierwsza {{Patrz|szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu}}, która służy do zamieniania szablonów na ich parametry, tutaj na jeden:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu={
["MDL:RozszerzonyLink"]=1,
["Kompletność"]="",
["Kompletność krótka"]="",
["Kompletność junior"]="",
["Książka"]="",
};
</syntaxhighlight>
Druga {{LinkPatrz|szablony_dozwolone_w_nazwach_linkowych}}, też służy do tego samego.
A trzecia tablica {{Patrz|szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu}} ma taką definicję, aby służyła do rozwijania przez JavaScript, są to elementy wikikodu, które są pracochłonne ze względu na ich skomplikowany kod, czy wikikod, nawet {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, i dlatego ich się nie rozwija przez stronicowy parser {{Code|{{ld2|StronicowyParser}}}}:
<syntaxhighlight lang="lua">
p.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu={
["Cytuj"]=true,
["Cytuj stronę"]=true,
["Cytuj pismo"]=true,
["Cytuj odcinek"]=true,
["Cytuj książkę"]=true,
["Cytuj grę komputerową"]=true,
};
</syntaxhighlight>
=== {{Code|p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy}} ===
==== Opis funkcji ====
==== Funkcje lokalne ====
===== {{Code|PomijajLinkiOrazLicencje}} =====
===== {{Code|CzySzablonLinkLubLicencja}} =====
===== {{Code|iteratorTekstuNaglowka}} =====
===== {{Code|LiniaArtykulow}} =====
===== {{Code|WsadzanieParametryDoTablicy}} =====
====== {{Code|CzyZaliczac}} ======
===== {{Code|AnalizaLiniiObiekty}} =====
=== {{Code|p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku}} ===
=== {{Code|p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji}} ===
==== Opis funkcji ====
==== Fukcje lokalne ====
===== {{Code|Spis}} =====
===== {{Code|InneSpisy}} =====
===== {{Code|SpisRzeczy}} =====
===== {{Code|IteratorFun}} =====
===== {{Code|ZbieranieDanychStronZAutonawigacji}} =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
kev8w2qr6ff4bw3xykf5t8isb1rnprb
Sosy
0
63594
544615
544610
2026-05-29T12:50:05Z
EdytaT
2664
/* Spis treści */
544615
wikitext
text/x-wiki
{{status|-25%|Kulinaria}}
{{Rozdział|Podręcznik|Sosy}}
<small>< [[Sosy/Okładka|Okładka]]</small>
{{FormularzWejścia|typ=search|szerokość=40|przestrzenie=(Główna)**|przedrostek=Sosy|szukaj=Szukaj|przerwa=no|zastępczy=Wyszukaj}}
== Spis treści ==
=== Sosy ===
# [[Sosy/Palone masło|Palone masło (beurre noisette)]]
# [[Sosy/Sos bearneński|Sos bearneński (sauce béarnaise)]]
# [[Sosy/Sos holenderski|Sos holenderski (sauce hollandaise)]]
# [[Sosy/Sos maślano-cytrynowy|Sos maślano-cytrynowy (beurre blanc au citron)]]
# [[Sosy/Sos maślano-winny|Sos maślano-winny (beurre blanc)]]
== [[Sosy/Słowniczek|Słowniczek]] ==
== [[Sosy/Bibliografia|Bibliografia]] ==
== Przypisy ==
{{Przypisy}}
avpz0giajbb76vlyguvvxxenlbk5hm5
544667
544615
2026-05-30T07:50:37Z
EdytaT
2664
544667
wikitext
text/x-wiki
{{status|-25%|Kulinaria}}
{{Rozdział|Podręcznik|Sosy}}
<small>< [[Sosy/Okładka|Okładka]]</small>
{{FormularzWejścia|typ=search|szerokość=40|przestrzenie=(Główna)**|przedrostek=Sosy|szukaj=Szukaj|przerwa=no|zastępczy=Wyszukaj}}
== Spis treści ==
=== Sosy ===
# [[Sosy/Palone masło|Palone masło (beurre noisette)]]
# [[Sosy/Sos bearneński|Sos bearneński (sauce béarnaise)]]
# [[Sosy/Sos holenderski|Sos holenderski (sauce hollandaise)]]
# [[Sosy/Sos maślano-cytrynowy|Sos maślano-cytrynowy (beurre blanc au citron)]]
# [[Sosy/Sos musztardowo-śmietanowy|Sos musztardowo-śmietanowy (sauce à la crème et moutarde)]]
# [[Sosy/Sos maślano-winny|Sos maślano-winny (beurre blanc)]]
== [[Sosy/Słowniczek|Słowniczek]] ==
== [[Sosy/Bibliografia|Bibliografia]] ==
== Przypisy ==
{{Przypisy}}
to6joeq6x3wdsflalg8mfx1utrxyu4s
Sosy/Sos maślano-cytrynowy
0
63622
544624
544611
2026-05-29T14:43:26Z
EdytaT
2664
544624
wikitext
text/x-wiki
{{Podrozdział|[[Sosy]]|Sos maślano-cytrynowy}}
[[Plik:Purple asparagus in Beurre blanc sauce.jpg|thumb|szparagi z sosem maślano-cytrynowym]]
== Sos maślano-cytrynowy (beurre blanc au citron) ==
* Sos cytrynowo-maślany wywodzi się z kuchni francuskiej. Jest odmiana sosu [[Sosy/Sos maślano-winny|białego sosu maślano-winnego (beurre blanc)]] lub [[Sosy/Sos holenderski|sosu holenderskiego]].
* Ten delikatny sos jest szczególnie popularny w Europie.
== Kompozycje smakowe ==
* Klasycznie i wykwintnie: przygotowuje się go poprzez ubijanie (mieszanie) zimnego masła z ciepłym sosem zredukowanym z soku z cytryny, białego wina i szalotki.
:* 100 g zimnego masła (pokrojonego w kostkę)
:* 1 ekologiczna cytryna (sok i odrobina drobno startej skórki)
:* 1 mała szalotka lub cebula (bardzo drobno pokrojona w kostkę)
:* 50 ml wytrawnego białego wina (alternatywnie bulion warzywny lub rybny)
:* 100 g śmietanki kremówki (dla zagęszczenia i uzyskania kremowej konsystencji)
:* Sól, pieprz i 1 szczypta cukru do smaku
::* W rondelku rozpuść małą łyżeczkę masła. Podsmaż pokrojoną w kostkę szalotkę na średnim ogniu, aż stanie się szklista, ale nie nabierze koloru.
::* Zalej białym winem (lub bulionem).
::* Zredukuj o połowę na średnim ogniu.
::* Dodaj śmietankę, sok z cytryny oraz pół łyżeczki startej skórki cytrynowej.
::* Krotko zagotuj, a potem gotuj na małym ogniu przez 2–3 minuty.
::* Zagęść (zwiąż) masłem.
::* Odstaw garnek z gorącej płyty kuchennej.
::* Dodawaj mieszając trzepaczką po jednej kostce lodowatego masła z gorącym, już niegotującym się sosem. Dzięki temu tłuszcz połączy się z płynem, tworząc aksamitny, gęsty sos.
::* Sos dopraw solą, białym pieprzem i odrobiną cukru, aby uzyskać harmonijny smak.
::* W razie potrzeby przecedź przez drobne sitko, aby usunąć kawałki cebuli.
::* Aby osiągnąć idealny efekt masło musi być zimne: tylko lodowato zimne masło zapewnia właściwą konsystencję podczas mieszania (zagęszczania). Jeśli sos się zagotuje na tym etapie, tłuszcz i sos się rozdzielą.
[[Plik:Bali Hai seared ahi.jpg|thumb|Tunczyk z sosem maślano-cytrynowym]]
== Potrawy ==
* Ryby gotowane na parze, duszone lub smażone
* Owoce morza
* Cielęcina
* Drób (jasne mięso)
* Warzywa
:* Szparagi!
* Makarony
== Przypisy ==
{{Przypisy}}
{{BrClear}}
<noinclude>{{Wolumin}}</noinclude>
gqytr0zw2oe9w723t0urcxfvk7g5mzh
544625
544624
2026-05-29T14:44:05Z
EdytaT
2664
544625
wikitext
text/x-wiki
{{Podrozdział|[[Sosy]]|Sos maślano-cytrynowy}}
[[Plik:Purple asparagus in Beurre blanc sauce.jpg|thumb|szparagi z sosem maślano-cytrynowym]]
== Sos maślano-cytrynowy (beurre blanc au citron) ==
* Sos cytrynowo-maślany wywodzi się z kuchni francuskiej. Jest odmiana sosu [[Sosy/Sos maślano-winny|białego sosu maślano-winnego (beurre blanc)]].
* Ten delikatny sos jest szczególnie popularny w Europie.
== Kompozycje smakowe ==
* Klasycznie i wykwintnie: przygotowuje się go poprzez ubijanie (mieszanie) zimnego masła z ciepłym sosem zredukowanym z soku z cytryny, białego wina i szalotki.
:* 100 g zimnego masła (pokrojonego w kostkę)
:* 1 ekologiczna cytryna (sok i odrobina drobno startej skórki)
:* 1 mała szalotka lub cebula (bardzo drobno pokrojona w kostkę)
:* 50 ml wytrawnego białego wina (alternatywnie bulion warzywny lub rybny)
:* 100 g śmietanki kremówki (dla zagęszczenia i uzyskania kremowej konsystencji)
:* Sól, pieprz i 1 szczypta cukru do smaku
::* W rondelku rozpuść małą łyżeczkę masła. Podsmaż pokrojoną w kostkę szalotkę na średnim ogniu, aż stanie się szklista, ale nie nabierze koloru.
::* Zalej białym winem (lub bulionem).
::* Zredukuj o połowę na średnim ogniu.
::* Dodaj śmietankę, sok z cytryny oraz pół łyżeczki startej skórki cytrynowej.
::* Krotko zagotuj, a potem gotuj na małym ogniu przez 2–3 minuty.
::* Zagęść (zwiąż) masłem.
::* Odstaw garnek z gorącej płyty kuchennej.
::* Dodawaj mieszając trzepaczką po jednej kostce lodowatego masła z gorącym, już niegotującym się sosem. Dzięki temu tłuszcz połączy się z płynem, tworząc aksamitny, gęsty sos.
::* Sos dopraw solą, białym pieprzem i odrobiną cukru, aby uzyskać harmonijny smak.
::* W razie potrzeby przecedź przez drobne sitko, aby usunąć kawałki cebuli.
::* Aby osiągnąć idealny efekt masło musi być zimne: tylko lodowato zimne masło zapewnia właściwą konsystencję podczas mieszania (zagęszczania). Jeśli sos się zagotuje na tym etapie, tłuszcz i sos się rozdzielą.
[[Plik:Bali Hai seared ahi.jpg|thumb|Tunczyk z sosem maślano-cytrynowym]]
== Potrawy ==
* Ryby gotowane na parze, duszone lub smażone
* Owoce morza
* Cielęcina
* Drób (jasne mięso)
* Warzywa
:* Szparagi!
* Makarony
== Przypisy ==
{{Przypisy}}
{{BrClear}}
<noinclude>{{Wolumin}}</noinclude>
4dclnd6dvoh7klov11f75l74f325swq
Sosy/Sos maślano-winny
0
63623
544623
2026-05-29T14:41:51Z
EdytaT
2664
Utworzono nową stronę " {{Podrozdział|[[Sosy]]|Sos maślano-winny}} [[Plik:Purple asparagus in Beurre blanc sauce.jpg|thumb|Szparagi z sosem maślano-winnym]] == Sos maślano-winny (beurre blanc) == * Klasyczny kremowy sos z białego wina, w przeciwieństwie do [[Sosy/Sos holenderski|sosu holenderskiego]], nie zawiera żółtek. * Sos urzeka delikatną kwaskowatością, która idealnie uzupełnia smak szparagów. == Kompozycje smakowe == * Klasycznie (na 4 porcje): :* 1 mała szalotk…"
544623
wikitext
text/x-wiki
{{Podrozdział|[[Sosy]]|Sos maślano-winny}}
[[Plik:Purple asparagus in Beurre blanc sauce.jpg|thumb|Szparagi z sosem maślano-winnym]]
== Sos maślano-winny (beurre blanc) ==
* Klasyczny kremowy sos z białego wina, w przeciwieństwie do [[Sosy/Sos holenderski|sosu holenderskiego]], nie zawiera żółtek.
* Sos urzeka delikatną kwaskowatością, która idealnie uzupełnia smak szparagów.
== Kompozycje smakowe ==
* Klasycznie (na 4 porcje):
:* 1 mała szalotka drobno pokrojona w kostkę
:* 20 g + 30 g zimnego masła
:* 100 ml wytrawnego białego wina (np. Muszkat, Pinot Blanc, Riesling)
:* 150 ml wody ze szparagów (lub bulionu warzywnego)
:* 100 ml śmietanki kremówki
:* 1 łyżeczka soku z cytryny
:* 1 łyżeczka musztardy o średniej ostrości
:* Sól, świeżo zmielony biały pieprz i szczypta gałki muszkatołowe
:* Ewentualnie trochę skrobi ziemniaczanej do zagęszczenia
::* Podsmaż szalotkę na 20 g masła w małym rondelku, aż się zeszkli.
::* Dodaj białe wino i gotuj, aż płyn zredukuje się o połowę, aby nieco złagodzić kwasowość.
::* Dodaj wywar ze szparagów (lub bulion warzywny) oraz śmietankę.
::* Zredukuj całość o jedną trzecią.
::* Wmieszaj sok z cytryny i musztardę.
::* Dopraw solą, pieprzem i gałką muszkatołową.
::* Jeśli ktoś wolisz nieco gęstszy sos, rozpuść pół łyżeczki skrobi ziemniaczanej w zimnej wodzie, dodaj mieszając, i krótko zagotuj.
::* Odstaw garnek z palnika i dodj pozostałe 30 g lodowatego masła w małych kawałkach, miksując sosręcznym blenderem. Dzięki temu sos stanie się kremowy i błyszczący.
::* Po dodaniu zimnego masła sos nie może się już gotować, ponieważ może się zważyć.
[[Plik:Lachs mit Shrimps in Weißweinsoße + Wein.jpg|thumb|Łosoś w sosie maślano-winnym]]
== Potrawy ==
* Ryby
* Owoce morza
* Warzywa
:* Białe szparagi!
== Przypisy ==
{{Przypisy}}
{{BrClear}}
<noinclude>{{Wolumin}}</noinclude>
g761rhghy63hcflruwdgz73sr9joc94
544626
544623
2026-05-29T14:48:14Z
EdytaT
2664
/* Potrawy */
544626
wikitext
text/x-wiki
{{Podrozdział|[[Sosy]]|Sos maślano-winny}}
[[Plik:Purple asparagus in Beurre blanc sauce.jpg|thumb|Szparagi z sosem maślano-winnym]]
== Sos maślano-winny (beurre blanc) ==
* Klasyczny kremowy sos z białego wina, w przeciwieństwie do [[Sosy/Sos holenderski|sosu holenderskiego]], nie zawiera żółtek.
* Sos urzeka delikatną kwaskowatością, która idealnie uzupełnia smak szparagów.
== Kompozycje smakowe ==
* Klasycznie (na 4 porcje):
:* 1 mała szalotka drobno pokrojona w kostkę
:* 20 g + 30 g zimnego masła
:* 100 ml wytrawnego białego wina (np. Muszkat, Pinot Blanc, Riesling)
:* 150 ml wody ze szparagów (lub bulionu warzywnego)
:* 100 ml śmietanki kremówki
:* 1 łyżeczka soku z cytryny
:* 1 łyżeczka musztardy o średniej ostrości
:* Sól, świeżo zmielony biały pieprz i szczypta gałki muszkatołowe
:* Ewentualnie trochę skrobi ziemniaczanej do zagęszczenia
::* Podsmaż szalotkę na 20 g masła w małym rondelku, aż się zeszkli.
::* Dodaj białe wino i gotuj, aż płyn zredukuje się o połowę, aby nieco złagodzić kwasowość.
::* Dodaj wywar ze szparagów (lub bulion warzywny) oraz śmietankę.
::* Zredukuj całość o jedną trzecią.
::* Wmieszaj sok z cytryny i musztardę.
::* Dopraw solą, pieprzem i gałką muszkatołową.
::* Jeśli ktoś wolisz nieco gęstszy sos, rozpuść pół łyżeczki skrobi ziemniaczanej w zimnej wodzie, dodaj mieszając, i krótko zagotuj.
::* Odstaw garnek z palnika i dodj pozostałe 30 g lodowatego masła w małych kawałkach, miksując sosręcznym blenderem. Dzięki temu sos stanie się kremowy i błyszczący.
::* Po dodaniu zimnego masła sos nie może się już gotować, ponieważ może się zważyć.
[[Plik:Lachs mit Shrimps in Weißweinsoße + Wein.jpg|thumb|Łosoś w sosie maślano-winnym]]
== Potrawy ==
* Medaliony z polędwiczki wieprzowej
* Drób (białe mięso)
* Szynka gotowana
* Ryby
* Owoce morza
* Warzywa
:* Białe szparagi!
== Przypisy ==
{{Przypisy}}
{{BrClear}}
<noinclude>{{Wolumin}}</noinclude>
1yfdrffym7z2l8m7mxg4tf94fv2ul74
Sosy/Sos musztardowo-śmietanowy
0
63624
544668
2026-05-30T08:03:13Z
EdytaT
2664
Utworzono nową stronę " {{Podrozdział|[[Sosy]]|Sos musztardowo-śmietanowy}} [[Plik:Brasserie des Terreaux (Belley) - roti de porc sauce moutarde et ses pommes sautées.jpg|thumb|Mięso w sosie musztardowo-śmietanowym]] == Sos musztardowo-śmietanowy (Sauce à la crème et moutarde) == * Sos pikantny, kremowy i, w zależności od użytej musztardy (np. średnio ostrej, musztardy z Dijon lub musztardy ziarnistej), od przyjemnie pikantnego do łagodnego. * Jest podawany na ciepło. ==…"
544668
wikitext
text/x-wiki
{{Podrozdział|[[Sosy]]|Sos musztardowo-śmietanowy}}
[[Plik:Brasserie des Terreaux (Belley) - roti de porc sauce moutarde et ses pommes sautées.jpg|thumb|Mięso w sosie musztardowo-śmietanowym]]
== Sos musztardowo-śmietanowy (Sauce à la crème et moutarde) ==
* Sos pikantny, kremowy i, w zależności od użytej musztardy (np. średnio ostrej, musztardy z Dijon lub musztardy ziarnistej), od przyjemnie pikantnego do łagodnego.
* Jest podawany na ciepło.
== Kompozycje smakowe ==
* Klasycznie: sos na bazie płynnej śmietany (lub crème fraîche), oraz jasnego sosu bazowego (z masła, mąki i bulionu) i musztardy.
* Często zagęszcza się go masłem i odrobiną mąki (zasmażka), doprawia białym winem, cytryną lub octem.
musztarda, śmietana .
[[Plik:Eier mit Senfsoße und Kartoffeln-9164.jpg|thumb|Jajka w sosie musztardowo-śmietanowym]]
== Potrawy ==
* Krótko smażone mięsa (filet wieprzowy, steki wołowe)
* Drobiu
* Ryby (łosoś)
* Warzywa
:* Szparagi
* Jajka z musztardą
== Przypisy ==
{{Przypisy}}
{{BrClear}}
<noinclude>{{Wolumin}}</noinclude>
9mwfa8jxjkhlxa7tjpmswaqzepdka5v
544669
544668
2026-05-30T08:26:09Z
EdytaT
2664
544669
wikitext
text/x-wiki
{{Podrozdział|[[Sosy]]|Sos musztardowo-śmietanowy}}
[[Plik:Brasserie des Terreaux (Belley) - roti de porc sauce moutarde et ses pommes sautées.jpg|thumb|Mięso w sosie musztardowo-śmietanowym]]
== Sos musztardowo-śmietanowy (Sauce à la crème et moutarde) ==
* Sos pikantny, kremowy i, w zależności od użytej musztardy (np. średnio ostrej, musztardy z Dijon lub musztardy ziarnistej), od przyjemnie pikantnego do łagodnego.
* Jest podawany na ciepło.
== Kompozycje smakowe ==
* Klasycznie: sos na bazie płynnej śmietany (lub crème fraîche), oraz jasnego sosu bazowego (z masła, mąki i bulionu) i musztardy.
* Często zagęszcza się go masłem i odrobiną mąki (zasmażka), doprawia białym winem, cytryną lub octem.
[[Plik:Eier mit Senfsoße und Kartoffeln-9164.jpg|thumb|Jajka w sosie musztardowo-śmietanowym]]
== Potrawy ==
* Krótko smażone mięsa (filet wieprzowy, steki wołowe)
* Drobiu
* Ryby (łosoś)
* Warzywa
:* Szparagi
* Jajka z musztardą
== Przypisy ==
{{Przypisy}}
{{BrClear}}
<noinclude>{{Wolumin}}</noinclude>
ghx7hz33s6vrj76y38cgbqgajgf1t4f
544670
544669
2026-05-30T09:06:47Z
EdytaT
2664
544670
wikitext
text/x-wiki
{{Podrozdział|[[Sosy]]|Sos musztardowo-śmietanowy}}
[[Plik:Brasserie des Terreaux (Belley) - roti de porc sauce moutarde et ses pommes sautées.jpg|thumb|Mięso w sosie musztardowo-śmietanowym]]
== Sos musztardowo-śmietanowy (Sauce à la crème et moutarde) ==
* Sos pikantny, kremowy i, w zależności od użytej [[Zioła i przyprawy/Musztarda|musztardy]] (np. średnio ostrej, musztardy z Dijon lub musztardy ziarnistej), od przyjemnie pikantnego do łagodnego.
* Jest podawany na ciepło.
== Kompozycje smakowe ==
* Klasycznie: sos na bazie płynnej śmietany (lub crème fraîche), oraz jasnego bulionu i musztardy.
* Często zagęszcza się go zasmażką (z masła i odrobiny mąki) doprawia [[Zioła i przyprawy/Białe wino|białym winem]], [[Zioła i przyprawy/Cytryna|cytryną]] lub [[Zioła i przyprawy/Ocet|octem]].
[[Plik:Eier mit Senfsoße und Kartoffeln-9164.jpg|thumb|Jajka w sosie musztardowo-śmietanowym]]
== Potrawy ==
* Krótko smażone mięsa (filet wieprzowy, steki wołowe)
* Drobiu
* Ryby (łosoś)
* Warzywa
:* Szparagi
* Jajka z musztardą
== Przypisy ==
{{Przypisy}}
{{BrClear}}
<noinclude>{{Wolumin}}</noinclude>
r7tnud8z2xiknd890g9hpfyqous4xf7