Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.1
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
Pruski/Lekcja1
0
24862
542354
541864
2026-05-10T11:46:02Z
Aklbmd164
37133
/* Odmiana słowa być */
542354
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 1</big>'''</div>
== Fonetyka języka pruskiego ==
=== Alfabet ===
Alfabet pruski składa się z liter (po przecinku zapis głoski w alfabecie IPA): <br>
* '''A a''' – wymawiana tak samo jak polskie ''a'', <span style="font-family: DejaVu Sans; font-size: normal;">/a/</span><br>
* '''Ā ā''' – jest to długie ''a''. Wymawia się je długo, a w brzmieniu powinna być czymś między ''a'' oraz ''o'', <span style="font-family: DejaVu Sans; font-size: normal;">/ɑː/</span><br>
* '''B b''' – tak samo jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/b/</span><br>
* '''C c''' – również tak samo, <span style="font-family: DejaVu Sans; font-size: normal;">/ts/</span><br>
* '''D d''' – jak wyżej, <span style="font-family: DejaVu Sans; font-size: normal;">/d/</span><br>
* '''Ḑ ḑ''' – jest to miękkie ''d''. Wymawia się to mniej więcej jak ''dj'', <span style="font-family: DejaVu Sans; font-size: normal;">/dʲ/</span><br>
* '''E e''' – litera ta zmiękcza poprzedzającą ją spółgłoskę i brzmi jak głoska pomiędzy ''a'' i ''e'', <span style="font-family: DejaVu Sans; font-size: normal;">/æ/</span> lub można ją wymawiać jako zwykłe ''a'', <span style="font-family: DejaVu Sans; font-size: normal;">/a/</span>. Przykład: ''genā'' – ''kobieta'' wymawiamy jak <span style="font-family: DejaVu Sans; font-size: normal;">/gʲænɑː/</span> lub <span style="font-family: DejaVu Sans; font-size: normal;">/gʲanɑː/</span>.<br>
* '''Ē ē''' – długie ''e'', <span style="font-family: DejaVu Sans; font-size: normal;">/eː/</span>. W wymowie jak pośrednia forma między ''i'' oraz ''e''<br>
* '''F f''' – wymowa jak w języku polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/f/</span>. Litera występuje w internacjonalizmach<br>
* '''G g''' – jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/ɡ/</span><br>
* '''Ģ ģ''' – miękkie ''g'', <span style="font-family: DejaVu Sans; font-size: normal;">/ɡʲ/</span>. Wymawiamy jak ''gj''<br>
* '''H h''' – wymawiana jako <span style="font-family: DejaVu Sans; font-size: normal;">/h/</span> lub <span style="font-family: DejaVu Sans; font-size: normal;">/x/</span>. Występuje w zapożyczeniach<br>
* '''I i''' – wymowa jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/i/</span><br>
* '''Ī ī''' – długie i, <span style="font-family: DejaVu Sans; font-size: normal;">/iː/</span>. Wymowa jak polskie ''i'', lecz dwa razy dłużej<br>
* '''J j''' – tak samo jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/j/</span><br>
* '''K k''' – jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/k/</span><br>
* '''Ķ ķ''' – wymawiamy jak ''ki'', <span style="font-family: DejaVu Sans; font-size: normal;">/kʲ/</span><br>
* '''L l''' – można wymawiać miękko jako ''lj'', <span style="font-family: DejaVu Sans; font-size: normal;">/lʲ/</span> albo jak polskie ''l'', <span style="font-family: DejaVu Sans; font-size: normal;">/l/</span><br>
* '''M m''' – wymowa polska, <span style="font-family: DejaVu Sans; font-size: normal;">/m/</span><br>
* '''N n''' – jak wyżej, <span style="font-family: DejaVu Sans; font-size: normal;">/n/</span><br>
* '''Ņ ņ''' – wymawiamy jak ''nj'', <span style="font-family: DejaVu Sans; font-size: normal;">/nʲ/</span><br>
* '''O o''' – występuje rzadko, głównie w zapożyczeniach. Można wymawiać jak po polsku lub jak głoskę ''a'', <span style="font-family: DejaVu Sans; font-size: normal;">/a/</span> lub <span style="font-family: DejaVu Sans; font-size: normal;">/ɔ/</span><br>
* '''Ō ō''' – Długie i głębokie ''o'', <span style="font-family: DejaVu Sans; font-size: normal;">/ɔː/</span><br>
* '''P p''' – wymowa polska, <span style="font-family: DejaVu Sans; font-size: normal;">/p/</span><br>
* '''R r''' – wymowa jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/r/</span><br>
* '''Ŗ ŗ''' – wymawiamy jak ''rj'', <span style="font-family: DejaVu Sans; font-size: normal;">/rʲ/</span><br>
* '''S s''' – wymowa jak po polsku, <span style="font-family: DejaVu Sans; font-size: normal;">/s/</span><br>
* '''Š š''' – wymowa podobna do ''sz'', lecz nieco bardziej zmiękczona, <span style="font-family: DejaVu Sans; font-size: normal;">/ʃʲ/</span><br>
* '''T t''' – jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/t/</span><br>
* '''Ț ț''' – ''tj'', <span style="font-family: DejaVu Sans; font-size: normal;">/tʲ/</span><br>
* '''U u''' – wymowa jak polskie ''u'', <span style="font-family: DejaVu Sans; font-size: normal;">/u/</span><br>
* '''Ū ū''' – długie ''u'', <span style="font-family: DejaVu Sans; font-size: normal;">/uː/</span><br>
* '''W w''' – jedna z trudniejszych do wymowy. Forma pośrednia między w i ł, <span style="font-family: DejaVu Sans; font-size: normal;">/ʋ/</span>. Jest to tak zwane ''w wargowe''. Spróbuj ją wymawiać jak polskie ''w'' nie dotykając dolną wargą do górnych zębów, tylko poprzez zetknięcie obu warg, ale pozostawienie między nimi małej szczeliny. Wyjdzie wtedy dźwięk podobny do ''ł''<br>
* '''Z z''' – jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/z/</span><br>
* '''Ž ž''' – zmiękczone ''ż'', <span style="font-family: DejaVu Sans; font-size: normal;">/ʒʲ/</span>
W języku pruskim zbitki liter ''se'', ''ze'', ''ne'' wymawia się jako [sja], [zja], [nja], a nie jako [śa], [źa], [ńa], np. ''segītun'' [sjagiitun].
Czasami używa się liter ''è'', ''à'', ''ù'', ''ì'', oznaczają one, że akcentowana jest krótka samogłoska. Takiego zapisu używa się tylko w słownikach, czyli np. słowo ''agrìsti'' będzie w tekście zapisane jako ''agristi''.
Litery ''m'', ''n'', ''r'', ''l'' zapisane z akutem lub grawisem (np. ''r̀'') oznaczają, że z poprzedzającą ją samogłoską tworzą dyftong, w którym występuje ton wznoszący, np. ugnis<u>ar̀</u>giskeniks, p<u>iľ</u>nintun, <u>uń</u>dawesniks. Taki zapis też występuje tylko w słownikach.
Czasami występują w zapożyczeniach: '''č''', '''ch''' oraz '''dž'''. Wymawiamy kolejno jak ''cz'', ''h'' i ''dż''.
=== Akcent ===
* W języku pruskim akcent pada na długie samogłoski (''ā'', ''ē'', ''ī'', ''ō'', ''ū''), np. ''br<u>ā</u>ti'' (brat). Akcent pada również na samogłoski krótkie za którymi występuje w pisowni podwojona litera (której nie wymawia się podwójnie), np. ''b<u>utt</u>an'' (dom), ''<u>emm</u>ens'' (imię).
* W języku pruskim jest też akcent toniczny, który występuje w dyftongach. Ma dwa rodzaje:
** ton wznoszący – używa się go w dyftongach ''aī'', ''eī'', ''aū'', ''eū'', ''aŕ'', ''iľ'', ''uń'' itp.
** ton opadający – używa się go w dyftongach ''āi'', ''ēi'', ''āu'', ''ēu'', ''ār'', ''īl'', ''ūn'' itp.
W dyftongach kreska nad literą nie oznacza długiej samogłoski, tylko że na tę część dyftongu pada akcent, np. mēnsa <span style="font-family: DejaVu Sans; font-size: normal;">/ˈmʲansa/</span>, kwēitis <span style="font-family: DejaVu Sans; font-size: normal;">/ˈkʋʲai̯tis/</span>, dwāi <span style="font-family: DejaVu Sans; font-size: normal;">/dʋai̯/</span>. Zwróć także uwagę na to, że w dyftongach litera ē zachowuje się tak samo jak litera e, czyli brzmi krótko jako <span style="font-family: DejaVu Sans; font-size: normal;">/æ/</span> lub <span style="font-family: DejaVu Sans; font-size: normal;">/a/</span> i zmiękcza poprzedzającą głoskę.
Zbitki liter składające się z samogłoski i spółgłosek ''m'', ''n'', ''l'', ''r'' są dyftongami tylko w sylabach zamkniętych, np. sūns <span style="font-family: DejaVu Sans; font-size: normal;">/suns/</span>. W sylabach otwartych samogłoski z kreską występujące w takich zbitkach czyta się długo, np. sūnus <span style="font-family: DejaVu Sans; font-size: normal;">/suːnus/</span>.
Przykłady mówionego języka pruskiego znajdują się na stronie https://sitti.vdu.lt//prussian/spoken.htm oraz https://youtube.com/@prusiskataliwidasna (kanał z Litwy)
== Odmiana słowa ''być'' ==
W każdym języku podstawowym słówkiem jest słowo ''być''. Nauczymy się odmiany tego słowa w języku pruskim:
'''Būtwei''' – Być
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|'''As asma''' – Ja jestem
|-
|'''Tū assei''' – Ty jesteś
|-
|'''Tāns ast''' – On jest
|-
|'''Tenā ast''' – Ona jest
|-
|'''Tennan ast''' – Ono jest
|-
|'''Mes asmai''' – My jesteśmy
|-
|'''Jūs astei''' – Wy jesteście
|-
|'''Tenēi ast''' – Oni są
|-
|'''Tennas ast''' – One są
|}
Jak widać, nie jest to szczególnie skomplikowane. Przykłady:<br>
* '''As asma Pīteris''' – Jestem Piotr.
* '''Tū assei zmūi''' – Jesteś człowiekiem.
Gdy orzeczeniem w zdaniu jest forma czasownika ''būtwei'', orzecznik jest wtedy w mianowniku.
== Słowniki ==
Obecnie istnieją dwa najważniejsze słowniki prusko-polskie w internecie: <br>
* http://prusaspira.org/wirdeins – słownik używający wariantu języka pruskiego w Polsce<br>
* https://wirdeins.twanksta.org/ – słownik używający wariantu języka pruskiego na Litwie<br>
W formie papierowej istnieją dwa słowniki: większy, w którym przedstawione są wzory odmiany to [https://www.yumpu.com/xx/document/read/7849117/slownik-odbudowanego-jezyka-pruskiego-towarzystwo-naukowe- ''Bazowy słownik polsko-pruski dla dalszego odrodzenia leksyki (Dialekt sambijski)''] Letasa Palmaitisa, a mniejszy, w którym przy każdym haśle jest zapisana wymowa to ''Słowniczek polsko-pruski i prusko-polski'' Piotra Szatkowskiego.
0nnzsq8lh9cvnp4w0uztnv9eeklxjff
542355
542354
2026-05-10T11:46:46Z
Aklbmd164
37133
/* Słowniki */
542355
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 1</big>'''</div>
== Fonetyka języka pruskiego ==
=== Alfabet ===
Alfabet pruski składa się z liter (po przecinku zapis głoski w alfabecie IPA): <br>
* '''A a''' – wymawiana tak samo jak polskie ''a'', <span style="font-family: DejaVu Sans; font-size: normal;">/a/</span><br>
* '''Ā ā''' – jest to długie ''a''. Wymawia się je długo, a w brzmieniu powinna być czymś między ''a'' oraz ''o'', <span style="font-family: DejaVu Sans; font-size: normal;">/ɑː/</span><br>
* '''B b''' – tak samo jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/b/</span><br>
* '''C c''' – również tak samo, <span style="font-family: DejaVu Sans; font-size: normal;">/ts/</span><br>
* '''D d''' – jak wyżej, <span style="font-family: DejaVu Sans; font-size: normal;">/d/</span><br>
* '''Ḑ ḑ''' – jest to miękkie ''d''. Wymawia się to mniej więcej jak ''dj'', <span style="font-family: DejaVu Sans; font-size: normal;">/dʲ/</span><br>
* '''E e''' – litera ta zmiękcza poprzedzającą ją spółgłoskę i brzmi jak głoska pomiędzy ''a'' i ''e'', <span style="font-family: DejaVu Sans; font-size: normal;">/æ/</span> lub można ją wymawiać jako zwykłe ''a'', <span style="font-family: DejaVu Sans; font-size: normal;">/a/</span>. Przykład: ''genā'' – ''kobieta'' wymawiamy jak <span style="font-family: DejaVu Sans; font-size: normal;">/gʲænɑː/</span> lub <span style="font-family: DejaVu Sans; font-size: normal;">/gʲanɑː/</span>.<br>
* '''Ē ē''' – długie ''e'', <span style="font-family: DejaVu Sans; font-size: normal;">/eː/</span>. W wymowie jak pośrednia forma między ''i'' oraz ''e''<br>
* '''F f''' – wymowa jak w języku polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/f/</span>. Litera występuje w internacjonalizmach<br>
* '''G g''' – jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/ɡ/</span><br>
* '''Ģ ģ''' – miękkie ''g'', <span style="font-family: DejaVu Sans; font-size: normal;">/ɡʲ/</span>. Wymawiamy jak ''gj''<br>
* '''H h''' – wymawiana jako <span style="font-family: DejaVu Sans; font-size: normal;">/h/</span> lub <span style="font-family: DejaVu Sans; font-size: normal;">/x/</span>. Występuje w zapożyczeniach<br>
* '''I i''' – wymowa jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/i/</span><br>
* '''Ī ī''' – długie i, <span style="font-family: DejaVu Sans; font-size: normal;">/iː/</span>. Wymowa jak polskie ''i'', lecz dwa razy dłużej<br>
* '''J j''' – tak samo jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/j/</span><br>
* '''K k''' – jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/k/</span><br>
* '''Ķ ķ''' – wymawiamy jak ''ki'', <span style="font-family: DejaVu Sans; font-size: normal;">/kʲ/</span><br>
* '''L l''' – można wymawiać miękko jako ''lj'', <span style="font-family: DejaVu Sans; font-size: normal;">/lʲ/</span> albo jak polskie ''l'', <span style="font-family: DejaVu Sans; font-size: normal;">/l/</span><br>
* '''M m''' – wymowa polska, <span style="font-family: DejaVu Sans; font-size: normal;">/m/</span><br>
* '''N n''' – jak wyżej, <span style="font-family: DejaVu Sans; font-size: normal;">/n/</span><br>
* '''Ņ ņ''' – wymawiamy jak ''nj'', <span style="font-family: DejaVu Sans; font-size: normal;">/nʲ/</span><br>
* '''O o''' – występuje rzadko, głównie w zapożyczeniach. Można wymawiać jak po polsku lub jak głoskę ''a'', <span style="font-family: DejaVu Sans; font-size: normal;">/a/</span> lub <span style="font-family: DejaVu Sans; font-size: normal;">/ɔ/</span><br>
* '''Ō ō''' – Długie i głębokie ''o'', <span style="font-family: DejaVu Sans; font-size: normal;">/ɔː/</span><br>
* '''P p''' – wymowa polska, <span style="font-family: DejaVu Sans; font-size: normal;">/p/</span><br>
* '''R r''' – wymowa jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/r/</span><br>
* '''Ŗ ŗ''' – wymawiamy jak ''rj'', <span style="font-family: DejaVu Sans; font-size: normal;">/rʲ/</span><br>
* '''S s''' – wymowa jak po polsku, <span style="font-family: DejaVu Sans; font-size: normal;">/s/</span><br>
* '''Š š''' – wymowa podobna do ''sz'', lecz nieco bardziej zmiękczona, <span style="font-family: DejaVu Sans; font-size: normal;">/ʃʲ/</span><br>
* '''T t''' – jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/t/</span><br>
* '''Ț ț''' – ''tj'', <span style="font-family: DejaVu Sans; font-size: normal;">/tʲ/</span><br>
* '''U u''' – wymowa jak polskie ''u'', <span style="font-family: DejaVu Sans; font-size: normal;">/u/</span><br>
* '''Ū ū''' – długie ''u'', <span style="font-family: DejaVu Sans; font-size: normal;">/uː/</span><br>
* '''W w''' – jedna z trudniejszych do wymowy. Forma pośrednia między w i ł, <span style="font-family: DejaVu Sans; font-size: normal;">/ʋ/</span>. Jest to tak zwane ''w wargowe''. Spróbuj ją wymawiać jak polskie ''w'' nie dotykając dolną wargą do górnych zębów, tylko poprzez zetknięcie obu warg, ale pozostawienie między nimi małej szczeliny. Wyjdzie wtedy dźwięk podobny do ''ł''<br>
* '''Z z''' – jak w polskim, <span style="font-family: DejaVu Sans; font-size: normal;">/z/</span><br>
* '''Ž ž''' – zmiękczone ''ż'', <span style="font-family: DejaVu Sans; font-size: normal;">/ʒʲ/</span>
W języku pruskim zbitki liter ''se'', ''ze'', ''ne'' wymawia się jako [sja], [zja], [nja], a nie jako [śa], [źa], [ńa], np. ''segītun'' [sjagiitun].
Czasami używa się liter ''è'', ''à'', ''ù'', ''ì'', oznaczają one, że akcentowana jest krótka samogłoska. Takiego zapisu używa się tylko w słownikach, czyli np. słowo ''agrìsti'' będzie w tekście zapisane jako ''agristi''.
Litery ''m'', ''n'', ''r'', ''l'' zapisane z akutem lub grawisem (np. ''r̀'') oznaczają, że z poprzedzającą ją samogłoską tworzą dyftong, w którym występuje ton wznoszący, np. ugnis<u>ar̀</u>giskeniks, p<u>iľ</u>nintun, <u>uń</u>dawesniks. Taki zapis też występuje tylko w słownikach.
Czasami występują w zapożyczeniach: '''č''', '''ch''' oraz '''dž'''. Wymawiamy kolejno jak ''cz'', ''h'' i ''dż''.
=== Akcent ===
* W języku pruskim akcent pada na długie samogłoski (''ā'', ''ē'', ''ī'', ''ō'', ''ū''), np. ''br<u>ā</u>ti'' (brat). Akcent pada również na samogłoski krótkie za którymi występuje w pisowni podwojona litera (której nie wymawia się podwójnie), np. ''b<u>utt</u>an'' (dom), ''<u>emm</u>ens'' (imię).
* W języku pruskim jest też akcent toniczny, który występuje w dyftongach. Ma dwa rodzaje:
** ton wznoszący – używa się go w dyftongach ''aī'', ''eī'', ''aū'', ''eū'', ''aŕ'', ''iľ'', ''uń'' itp.
** ton opadający – używa się go w dyftongach ''āi'', ''ēi'', ''āu'', ''ēu'', ''ār'', ''īl'', ''ūn'' itp.
W dyftongach kreska nad literą nie oznacza długiej samogłoski, tylko że na tę część dyftongu pada akcent, np. mēnsa <span style="font-family: DejaVu Sans; font-size: normal;">/ˈmʲansa/</span>, kwēitis <span style="font-family: DejaVu Sans; font-size: normal;">/ˈkʋʲai̯tis/</span>, dwāi <span style="font-family: DejaVu Sans; font-size: normal;">/dʋai̯/</span>. Zwróć także uwagę na to, że w dyftongach litera ē zachowuje się tak samo jak litera e, czyli brzmi krótko jako <span style="font-family: DejaVu Sans; font-size: normal;">/æ/</span> lub <span style="font-family: DejaVu Sans; font-size: normal;">/a/</span> i zmiękcza poprzedzającą głoskę.
Zbitki liter składające się z samogłoski i spółgłosek ''m'', ''n'', ''l'', ''r'' są dyftongami tylko w sylabach zamkniętych, np. sūns <span style="font-family: DejaVu Sans; font-size: normal;">/suns/</span>. W sylabach otwartych samogłoski z kreską występujące w takich zbitkach czyta się długo, np. sūnus <span style="font-family: DejaVu Sans; font-size: normal;">/suːnus/</span>.
Przykłady mówionego języka pruskiego znajdują się na stronie https://sitti.vdu.lt//prussian/spoken.htm oraz https://youtube.com/@prusiskataliwidasna (kanał z Litwy)
== Odmiana słowa ''być'' ==
W każdym języku podstawowym słówkiem jest słowo ''być''. Nauczymy się odmiany tego słowa w języku pruskim:
'''Būtwei''' – Być
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|'''As asma''' – Ja jestem
|-
|'''Tū assei''' – Ty jesteś
|-
|'''Tāns ast''' – On jest
|-
|'''Tenā ast''' – Ona jest
|-
|'''Tennan ast''' – Ono jest
|-
|'''Mes asmai''' – My jesteśmy
|-
|'''Jūs astei''' – Wy jesteście
|-
|'''Tenēi ast''' – Oni są
|-
|'''Tennas ast''' – One są
|}
Jak widać, nie jest to szczególnie skomplikowane. Przykłady:<br>
* '''As asma Pīteris''' – Jestem Piotr.
* '''Tū assei zmūi''' – Jesteś człowiekiem.
Gdy orzeczeniem w zdaniu jest forma czasownika ''būtwei'', orzecznik jest wtedy w mianowniku.
== Słowniki ==
Obecnie istnieją dwa najważniejsze słowniki prusko-polskie w internecie: <br>
* http://prusaspira.org/wirdeins – słownik wariantu języka pruskiego używanego w Polsce<br>
* https://wirdeins.twanksta.org/ – słownik wariantu języka pruskiego używanego na Litwie<br>
W formie papierowej istnieją dwa słowniki: większy, w którym przedstawione są wzory odmiany to [https://www.yumpu.com/xx/document/read/7849117/slownik-odbudowanego-jezyka-pruskiego-towarzystwo-naukowe- ''Bazowy słownik polsko-pruski dla dalszego odrodzenia leksyki (Dialekt sambijski)''] Letasa Palmaitisa, a mniejszy, w którym przy każdym haśle jest zapisana wymowa to ''Słowniczek polsko-pruski i prusko-polski'' Piotra Szatkowskiego.
kookz0bu4xsdf8lt9s3po5rftywlrqx
Szablon:StronaStart/styles.css
10
33595
542321
538703
2026-05-09T18:43:35Z
Persino
2851
542321
sanitized-css
text/css
.fonty_rodzina_sans{
font-family: Arial, Helvetica, "Free Helvetian", FreeSans, sans-serif;
font-stretch:normal;
font-variant:normal;
font-style:normal;
font-weight:normal;
font-size-adjust:none;
letter-spacing:normal;
word-spacing:normal;
text-align:justify;
text-justify:inter-word;
word-wrap:break-word;
word-break:break-word;
hyphens:auto;
}
.fonty_rodzina_sans ul li,
.fonty_rodzina_sans ol li{
text-align:left;
}
.fonty_główna_kolumna, .fonty_tekst_we_wzorach, .fonty_obiekt, .fonty_rysunek, .fonty_patrz,.fonty_zobaczteż, .fonty_twierdzenie, .fonty_hipoteza, .fonty_lemat, .fonty_kryterium, .fonty_dowód, .fonty_postulat, .fonty_postulaty, .fonty_określenie, .fonty_zadanie, .fonty_praktyka, .fonty_procedura, .fonty_schemat{
font-size:calc( 0.875rem * 1.042 );
line-height:1.3em;
}
.format .fonty_główna_kolumna{
font-size:calc( 0.875em * 1.042 );
line-height:1.3em;
}
.format .fonty_tekst_we_wzorach, .format .fonty_obiekt, .format .fonty_rysunek, .format .fonty_patrz,.fonty_zobaczteż, .format .fonty_twierdzenie, .format .fonty_hipoteza, .format .fonty_lemat, .format .fonty_kryterium, .format .fonty_dowód, .format .fonty_postulat, .format .fonty_postulaty, .format .fonty_określenie, .format .fonty_zadanie, .format .fonty_praktyka, .format .fonty_procedura, .format .fonty_schemat{
font-size:1em;
line-height:1.3em;
}
.fonty_poboczna_kolumna{
font-size:calc( 0.75rem * 1.040 );
line-height:1.2em;
}
.format .fonty_poboczna_kolumna{
font-size:calc( 0.75em * 1.040 );
line-height:1.2em;
}
.fonty_toc{
font-size:calc( 0.8125rem * 1.092 );
line-height: 1.0em;
}
.format .fonty_toc{
font-size:calc( 0.8125em * 1.092 );
line-height: 1.0em;
}
:not(span):not(.fonty_formuły) > span.mwe-math-element, :not(span):not(.fonty_wzory) > span.mwe-math-element,
.fonty_rodzina_serif{
font-family: "Times New Roman", Times, "Free Times", FreeSerif, serif;
font-stretch:normal;
font-variant:normal;
font-style:normal;
font-weight:normal;
font-size-adjust:0.45;
letter-spacing:normal;
word-spacing:normal;
word-wrap:break-word;
word-break:break-word;
}
:not(span):not(.fonty_formuły) > span.mwe-math-element, :not(span):not(.fonty_wzory) > span.mwe-math-element,
.fonty_formuły, .fonty_wzory{
font-size:calc( 0.875rem * 0.86 );
line-height:inherit;
}
.format .fonty_formuły, .format .fonty_wzory{
font-size:calc( 0.875em * 0.86 / 0.875 / 1.042 );
line-height:inherit;
}
.format .fonty_formuły > span.fonty_tekst_we_wzorach, .format .fonty_wzory > span.fonty_tekst_we_wzorach{
font-size:calc( 1em / 0.875 / 0.86 * 0.875 * 1.042 );
line-height:inherit;
}
.fonty_opis_i_numeracja, .fonty_linkobiekt, .fonty_linkwzór, .fonty_linkrysunek, .fonty_linkpatrz,.fonty_linkzobaczteż, .fonty_linktwierdzenie, .fonty_linkhipoteza, .fonty_linklemat, .fonty_linkkryterium, .fonty_linkdowód, .fonty_linkpostulat, .fonty_linkpostulaty, .fonty_linkokreślenie, .fonty_linkzadanie, .fonty_linkpraktyka, .fonty_linkprocedura, .fonty_linkschemat,.fonty_linknagłówek{
font-size:calc(0.8125rem * 1.034);
line-height:inherit;
}
.format .fonty_opis_i_numeracja, .format .fonty_linkobiekt, .format .fonty_linkwzór, .format .fonty_linkrysunek, .format .fonty_linkpatrz,.format .fonty_linkzobaczteż, .format .fonty_linktwierdzenie, .format .fonty_linkhipoteza, .format .fonty_linklemat, .format .fonty_linkkryterium, .format .fonty_linkdowód, .format .fonty_linkpostulat, .format .fonty_linkpostulaty, .format .fonty_linkokreślenie, .format .fonty_linkzadanie, .format .fonty_linkpraktyka, .format .fonty_linkprocedura, .format .fonty_linkschemat,.format .fonty_linknagłówek{
font-size:calc( 1em * 0.8125 * 1.034 / 0.875 / 1.042 );
line-height:inherit;
}
/*{{Kategoria|Szablony - arkusze stylów/StronaStart|sortuj spacją=tak}}*/
7h5mqs9ad2ke4cc0rev988ilfgoa3e7
Moduł:StronicowyParser/ZbieranieDanychStron
828
55009
542343
535291
2026-05-09T23:09:42Z
Persino
2851
542343
Scribunto
text/plain
local p={};
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true);
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwa_przestrzeni or nazwy_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or nazwy_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or nazwy_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or nazwy_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
end;
end;
function p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
else
p.LinkowanieFinalizowaniePrac(self,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych={};
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych);
if(tabela_listy_danych_analizy_ksiazki0)then
if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki0,})then return;end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in pairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron","Link"..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron","Link"..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
end;
end;
if(not czy_link)then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
else
if(
(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])
or(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])
)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
end;
end;
end;
end;
end;
end;
end;
end;
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowSzablonuISzablonu);
end;
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka], nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy});
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
end;
return self.tabela_listy_danych_analizy_ksiazki;
end;
return p;
ejlz3jwqz8e36czzci295tepuir01jb
Śpiewnik/Mazurek Dąbrowskiego/Muzyka
0
58003
542344
407477
2026-05-10T07:58:27Z
Ashaio
4702
poprawki w takcie 14 i 22 (za źródłem)
542344
wikitext
text/x-wiki
{| cellpadding="10px"
| <span style="color:#0645AD> [[{{BASEPAGENAME}}|Opis]] </span>
| <span style="color:#0645AD; border: #0645AD solid; border-width: 0 0 3px 0; border-radius: 2px
| border: transparent solid; border-width: 0 0 3px 0; border-radius: 2px;> Muzyka </span>
|}
== Na fortepian ==
'''Autor melodii''' nieznany.<br>
'''Aranżacja:''' Kazimierz Sikorski
<score raw="1" vorbis="1">
\version "2.20.0"
\header {
title = "Mazurek Dąbrowskiego"
poet = "Słowa: Józef Wybicki"
composer = "Muzyka: autor nieznany"
arranger = "Aranżacja: Kazimierz Sikorski"
tagline = ""
}
\score {
\new PianoStaff <<
\new Staff {
\autoBeamOff
\tempo 4 = 116
% \relative f {
\time 3/4
\key f \major
<<
\new Voice { \relative f' {
\stemUp a8. bes16 c4 c | c8. a16 d8[ c] <bes g>[ <a f>] | g8. g16 <c g>4. <bes f>8 | bes4 a r |
a8. bes16 c4 c | c8. a16 d8[ c] bes[ a] | g8. g16 c4. << e,8 bes >> | <bes e g>4 <c f> r |
g'4 g4. bes8 | bes[ a] a2 | bes8. bes16 bes4 <f bes>8 <g d'> | d'4 c2 |
a8 c f4. e8 | e[ d] d2 | c8 c bes4. e,8 | g4 f r |
g4 g4. bes8 | bes[ a] a2 | bes8. bes16 bes4 <f bes>8 <g d'> | d'4 c2 |
a8 c f4. e8 | e[ d] d2 | c8 c bes4. e,8 | g4 f r |
} }
\new Voice {
\stemDown <c' f'>4 <c' f'> <c' e' g'> | <c' f' a'> <c' f'> d' | <f' c''> << c' { e'8[ f'] } >> <c' g'>4 | c'2 r4 |
<c' f'>4 <c' f'> <c' e' g'> | <c' f' a'>4 <c' f'> d' | <c' f'>4 << c'4 { e'8[ d'] e'8[ c'] } >> | c'2 r4 |
<c' e'>4 << e' { c'8[ f'] } >> <c' e'>4 | << f'2 { d'8[ c'] c'4 } >> <d' f'> | << d'2 { f'4. f'8 } >> d'4 |
<< f'4 { bes'8[ a'] } >> <f' a'>2 |
<c' f'>4 << f' { a'8[ bes'] } >> <f' c'>4 |
%<f' c'>4 << f' { bes'8[ a'] } >> << d'4 { g'8[ f'] } >> |
<< { \voiceOne <f' c'>4 f' d' } \new Voice { \voiceTwo s4 bes'8[ a'] g'[ f'] } >> \oneVoice
<< <c' g'>2 { f'4. e'8 } >> d'8[ c'] |
<< c'2 { <bes e' g'>4 <a f'> } >> r4 |
<c' e'>4 << e' { c'8[ f'] } >> <c' e'>4 | << f'2 { d'8[ c'] c'4 } >> <d' f'> | << d'2 { f'4. f'8 } >> d'4
| << f'4 { bes'8[ a'] } >> <f' a'>2 |
<c' f'>4 << f' { a'8[ bes'] } >> <f' c'>4 |
%<f' c'> << f' { bes'8[ a'] } >> << d'4 { g'8[ f'] } >> |
<< { \voiceOne <f' c'>4 f' d' } \new Voice { \voiceTwo s4 bes'8[ a'] g'[ f'] } >> \oneVoice |
<< <c' g'>2 { f'4. e'8 } >> d'8[ c'] |
<< c'2 { <bes e' g'>4 <a f'> } >> r4 |
}
>>
}
\new Staff {
\clef "bass"
\key f \major
<f,, f,>4 <a,, a,> <c, c> | <f, f> <a,, a,> <bes,, bes,> | <c, c>4. <d, d>8 <e, e>4 | <f, f>4. <c, c>8 <a,, a,>[ <g,, g,>] |
<f,, f,>4 <a,, a,> <c, c> | <f, f> <a,, a,> <bes,, bes,> | <c, c>2 <c, c>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <bes,, bes,>] |
<c, c>2 <c, c>4 | <f, f>4. <e, e>8 <d, d>[ <c, c>] | <bes,, bes,>2 <bes,, bes,>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <c, c>] |
<f, f>2 <a,, a,>4 | <bes,, bes,>2 <bes,, bes,>4 | <c, c>2 <c, c>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <bes,, bes,>] |
<c, c>2 <c, c>4 | <f, f>4. <e, e>8 <d, d>[ <c, c>] | <bes,, bes,>2 <bes,, bes,>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <c, c>] |
<f, f>2 <a,, a,>4 | <bes,, bes,>2 <bes,, bes,>4 | <c, c>2 <c, c>4 | <f,, f,>2 r4 |
}
>>
\midi{}
\layout{}
}
</score>
<br>
'''Źródło''': Oficjalna aranżacja na fortepian umieszczona w ''Ustawie z dnia 31 stycznia 1980 r. o godle, barwach i hymnie Rzeczypospolitej Polskiej oraz o pieczęciach państwowych'', [https://isap.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=WDU19800070018 Dz.U. 1980 nr 7 poz. 18], s. 13.
== Na głos i fortepian ==
'''Autor melodii''' nieznany.<br>
'''Aranżacja:''' Kazimierz Sikorski
<score raw="1" vorbis="1">
\version "2.20.0"
\header {
title = "Mazurek Dąbrowskiego"
poet = "Słowa: Józef Wybicki"
composer = "Muzyka: autor nieznany"
arranger = "Aranżacja: Kazimierz Sikorski"
tagline = ""
}
\score {
<<
\new Staff {
\set Staff.midiInstrument = #"fiddle"
\relative f' {
\autoBeamOff
\tempo 4 = 116
\time 3/4
\key f \major
\new Voice = "Air" {
a8. bes16 c4 c | c8. a16 d8( c) bes( a) | g8. g16 c4. bes8 | bes4 a r |
a8. bes16 c4 c | c8. a16 d8( c) bes( a) | g8. g16 c4. e,8 | g4 f r \bar ".|:"
g4 g4. bes8 | bes( a) a2 | bes8. bes16 bes4 bes8 d | d4 c2 |
a8 c f4. e8 | e( d) d2 | c8 c bes4. e,8 | g4 f r \bar ":|."
g4 g4. bes8 | bes( a) a2 | bes8. bes16 bes4 bes8 d | d4 c2 |
a8 c f4. e8 | e( d) d2 | c8 c bes4. e,8 | g4 f r \bar "|."
}
}
}
\new Lyrics \lyricsto "Air" {
\lyricmode {
Je -- szcze Pol -- ska nie zgi -- nę -- ła, kie -- dy my ży -- je -- my,
Co nam ob -- ca prze -- moc wzię -- ła, sza -- blą od -- bie -- rze -- my.
Marsz, marsz, Dą -- bro -- wski, z_zie -- mi wło -- skiej do Pol -- ski!
Za two -- im prze -- wo -- dem złą -- czym się z_na -- ro -- dem.
Marsz, marsz, Dą -- bro -- wski, z_zie -- mi wło -- skiej do Pol -- ski!
Za two -- im prze -- wo -- dem złą -- czym się z_na -- ro -- dem.
}
}
\new PianoStaff <<
\new Staff {
\relative f {
\time 3/4
\key f \major
<f a c>4 <f c' f> <c' e g> | <c f a> <c f> <g d' g>8 f'8 | <g, c f>4 <g c e>8 f'8 <g, c g'>4 | << c2 { <bes g'>4 <a c f> } >> r |
<f a c>4 <f c' f> <c' e g> | <c f a> <c f> <g d' g>8 f'8 | <g, c f>4 <g c e>8 d'8 <bes c e>4 | << c2 { <bes e>4 <a c f> } >> r |
<g c e>4 <g c e>8[ <d' f>] <c e g>8[ bes] | << f'2 { <d bes>8[ <a c>] <a c>4 } >> <a d f>4 | <bes d f>4. <bes d f>8 <bes d f>[ g'] | <d f bes>8[ a'] <c, f a>2 |
<< <c f> { a'4. bes8 } >> <c, f c'>4 | << <d f>2 { c'4 bes8[ a] } >> <bes, d g>8[ f'] | << <g, c>2 { f'4. e8 } >> <g, bes d>8[ e'] | << c2 { <bes e>4 <a c f> } >> r |
<g c e>4 <g c e>8[ <d' f>] <c e g>8[ bes] | << f'2 { <d bes>8[ <a c>] <a c>4 } >> <a d f>4 | <bes d f>4. <bes d f>8 <bes d f>[ g'] | <d f bes>8[ a'] <c, f a>2 |
<< <c f> { a'4. bes8 } >> <c, f c'>4 | << <d f>2 { c'4 bes8[ a] } >> <bes, d g>8[ f'] | << <g, c>2 { f4. e'8 } >> <g, bes d>8[ e'] | << c2 { <bes e>4 <a c f> } >> r |
}
}
\new Staff {
\clef "bass"
\key f \major
<f,, f,>4 <a,, a,> <c, c> | <f, f> <a,, a,> <bes,, bes,> | <c, c>4. <d, d>8 <e, e>4 | <f, f>4. <c, c>8 <a,, a,>[ <g,, g,>] |
<f,, f,>4 <a,, a,> <c, c> | <f, f> <a,, a,> <bes,, bes,> | <c, c>2 <c, c>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <bes,, bes,>] |
<c, c>2 <c, c>4 | <f, f>4. <e, e>8 <d, d>[ <c, c>] | <bes,, bes,>2 <bes,, bes,>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <c, c>] |
<f, f>2 <a,, a,>4 | <bes,, bes,>2 <bes,, bes,>4 | <c, c>2 <c, c>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <bes,, bes,>] |
<c, c>2 <c, c>4 | <f, f>4. <e, e>8 <d, d>[ <c, c>] | <bes,, bes,>2 <bes,, bes,>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <c, c>] |
<f, f>2 <a,, a,>4 | <bes,, bes,>2 <bes,, bes,>4 | <c, c>2 <c, c>4 | <f,, f,>2 r4 |
}
>>
>>
\midi{}
\layout{}
}
</score>
<br>
'''Źródło''': Oficjalna aranżacja na głos i fortepian umieszczona w ''Ustawie z dnia 31 stycznia 1980 r. o godle, barwach i hymnie Rzeczypospolitej Polskiej oraz o pieczęciach państwowych'', [https://isap.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=WDU19800070018 Dz.U. 1980 nr 7 poz. 18], s. 14.
isydrkw6jgcywm6kezoqtsvoa3sevzl
Pruski/Lekcja12
0
61047
542345
541962
2026-05-10T10:38:17Z
Aklbmd164
37133
/* Przydatne wyrażenia */
542345
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 12</big>'''</div>
== Īdis – Jedzenie ==
=== Wēišai – Owoce ===
<gallery>
File:Red Apple.jpg|'''ābli''' <52> – jabłko
File:Bowl of Blueberries (Unsplash).jpg|'''agā''' <46> – jagoda
File:Pineapple in garden.jpg|'''ānanasi''' <52> – ananas
File:Local Orange Variety of Kozan - Kozan Yerli Portakal 04.jpg|'''appelzini''' <52> – pomarańcza
File:Banana (white background).jpg|'''banāni''' <52> – banan
File:Lemon-Whole-Split.jpg|'''citrōni''' <52> – cytryna
File:Pomegranate03 edit.jpg|'''granātasabli''' <52> – granat
File:Raspberries05.jpg|'''kamisteni''' <52> – malina
File:Kiwi aka.jpg|'''kīwi''' <52> – kiwi
File:Coconuts - single and cracked open.jpg|'''kōkusi''' <52> – kokos
File:Pear in tree 0465.jpg|'''krāušas''' <50> – gruszka ''blp'' (bez l. pojedynczej, występuje tylko w l. mnogiej)
File:Madarines white bg.jpg|'''mandarīni''' <52> – mandarynka
File:Autumn Red peaches.jpg|'''pīrziks''' <32> – brzoskwinia
File:Garden strawberry (Fragaria × ananassa).jpg|'''prasseli''' <52> – truskawka
File:Damson plum fruit.jpg|'''sliwaītas''' <45> – śliwka ''blp''
File:Starr-130830-0485-Citrullus lanatus-in half-Hawea Pl Olinda-Maui (25166802001).jpg|'''undasmelōni''' <52> – arbuz
File:Table grapes on white.jpg|'''wīnega''' <45> – winogrono
File:02024 May Duke Cherry, Beskids mts.jpg|'''wisnaītas''' <45> – wiśnia ''blp''
</gallery>
=== Saknis – Warzywa ===
<gallery>
File:Phaseolus vulgaris white beans, witte boon.jpg|'''babba''' <45> – fasola
File:Broccoli and cross section edit.jpg|'''brukōlis''' <40> – brokuł
File:Potato var. Linda HC1.JPG|'''bulwi''' <52> – ziemniak
File:Carrots.JPG|'''burkans''' <32> – marchewka
File:CourgettesInBowl.JPG|'''cukīni''' <52> – cukinia
File:Cucumber from Denmark.jpg|'''gurki''' <52> – ogórek
File:Pisum sativum Горох лущильний - зелений горошок.jpg|'''kekkers''' <33> – groszek
File:CabbageBG.JPG|'''kumstas''' <32> – kapusta
File:Chou-fleur 02.jpg|'''kweitākumstas''' <32> – kalafior
File:Corn 001.jpg|'''majjiss''' <32> – kukurydza
File:Red capsicum and cross section.jpg|'''paprika''' <45> – papryka
File:Beets-Bundle.jpg|'''rūnkeli''' <50> – burak
File:Kropsla herfst.jpg|'''salāts''' <32> – sałata
File:Onions.jpg|'''sippeli''' <52> – cebula
File:Bright red tomato and cross section02.jpg|'''tōmati''' <52> – pomidor
</gallery>
=== Pūwjai – Napoje ===
<gallery>
File:Cup of tea isolated on white background - Petr Kratochvil (cropped).jpg|'''tējs''' <32> – herbata
File:Milk glass.jpg|'''daddan''' <35> – mleko
File:Orange juice (3249410157).jpg|'''saks''' <36> – sok
File:Glass Half Full bw 1.JPG|'''undan''' <35> – woda
File:Drinking glass 00118.gif|'''gazītan undan''' <35> – woda gazowana
File:Cup of coffee (Serbian cuisine, Grand kava).jpg|'''kafējs''' <32> – kawa
File:Bottle, Wine (Italiano Spumante) (48709467566).jpg|'''wīns''' <32> – wino
File:Red Wine Glass.jpg|'''wūrmiwins''' <32> – czerwone wino
File:White Wine Glas.jpg|'''gaīlawins''' <32> – białe wino
File:NCI Visuals Food Beer.jpg|'''pīws''' <32> – piwo
</gallery>
=== Mēnsa, daddas prōduktai, zirnis prōduktai, preigardāi – Mięso, nabiał, produkty zbożowe, przyprawy ===
<gallery>
File:Red Meat.jpg|'''mēnsa''' <45> – mięso
File:Breakfast Ham (53273608095).jpg|'''kūmpis''' <40> – szynka
File:Podwawelska ..jpg|'''lāitin''' <37> – kiełbasa
File:WFromage.png|'''sūris''' <40> – ser żółty
File:Творог.jpg|'''glumzdi''' <52> – twaróg
File:2023 Masło w maselniczce.jpg|'''anktan''' <35> – masło
File:Turkish strained yogurt.jpg|'''jōgurts''' <32> – jogurt
File:Steamed Buckwheat on a plate.jpg|'''puttera''' <45> – kasza
File:Mjøl.jpg|'''miltan''' <35> – mąka
File:HK food ingredient texture of Alberto Poiatti Italian brand 直通粉 penne rigate yellow September 2021 SS2 02.jpg|'''nūdelis''' <52> → makaron ''blp''
File:Anadama bread (1).jpg|'''geīts''' <58> – chleb
File:13-08-31-Kochtreffen-Wien-RalfR-N3S 7849-024.jpg|'''traskeīlis''' <40> – bułka
File:Fancy raw mixed nuts macro.jpg|'''reīss''' <36> – orzech
File:Eierdoosmet10eierengevuld2010.jpg|'''pāuts''' <32> – jajko
File:Salt shaker on white background.jpg|'''sāls''' <60> – sól
File:Black Pepper IMG 4866.jpg|'''pippars''' <32> – pieprz
File:Heinz Tomato Ketchup (51266256693).jpg|'''ketšups''' <32> – keczup
File:Zaanse mayonaise.jpg|'''majōnezi''' <52> – majonez
File:Los Gallitos - October 31 2022 - Sarah Stierch 03.jpg|'''pamārka''' <45> – sos
</gallery>
=== Īdas – Potrawy ===
<gallery>
File:0003 kotlet schabowy 2013, photo by Silar.JPG|'''karmenādi''' <52> – kotlet
File:Plated grilled fish (cropped).jpg|'''zuks''' <32> – ryba
File:Scrambed eggs.jpg|'''pautinni''' <52> – jajecznica
File:Egg Sandwich.jpg|'''geītka''' <45> – kanapka
File:French fries (6211716064).jpg|'''frittis''' <52> – frytki ''blp''
File:Pizza napoletana.jpg|'''picca''' <45> – pizza
File:Naleśnik - 2023.08.01.jpg|'''kalsā''' <46> – naleśnik, blin
File:Zupa ogórkowa - 2024.05.29.jpg|'''zuppi''' <52> – zupa
File:Rosół - 2024.11.03.jpg|'''jūsi''' <52> – rosół, bulion
File:Vegetable salad, Christmas Eve dinner in Brisbane, Australia, 2023.jpg|'''mišmašs''' <32> – sałatka jarzynowa
</gallery>
=== Saldiskāi – Słodycze ===
<gallery>
File:Sugar-485057.jpg|'''cukkeris''' <40> – cukier
File:MielCristalizada.jpg|'''meddu''' <44> – miód
File:Mermelada de frutlla.jpeg|'''kōnfitiri''', '''marmelādi''' <52> – konfitura, marmolada, dżem
File:Piece of chocolate cake on a white plate decorated with chocolate sauce.jpg|'''lūgis''' <40> – ciasto
File:Koekjestrommel open.jpg|'''kepinnis''' <52> – ciastka, herbatniki ''blp''
File:Strawberry ice cream cone (5076899310).jpg|'''ladāi''' <36> – lody
File:Green and Black's dark chocolate bar 2.jpg|'''šokōladi''' <52> – czekolada
File:2023 Cukierki Michałki klasyczne.jpg|'''bumbōns''' <32> – cukierek
File:Charms Blow Pop (2458474034).jpg|'''lučči''' <52> – lizak
</gallery>
== Odmiana czasowników ''jeść'' i ''pić'' w cz. teraźniejszym ==
* '''Īstun''' – jeść
{| style="background-color: #f5f5f5; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''īma'''
|-
|Tū '''īsei'''
|-
|Tāns/Tenā/Sta '''īst'''
|-
|Mes '''īmai'''
|-
|Jūs '''ītei'''
|-
|Tenēi/Tennas '''īst'''
|}
* '''Pūtun''' – pić
{| style="background-color: #f5f5f5; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''pūja'''
|-
|Tū '''pūja'''
|-
|Tāns/Tenā/Sta '''pūja'''
|-
|Mes '''pūjimai'''
|-
|Jūs '''pūjitei'''
|-
|Tenēi/Tennas '''pūja'''
|}
== Przydatne wyrażenia ==
* '''Per brōkastin/pussideinan/bitasīdin as īma...''' – Na śniadanie/obiad/kolację jem...
* '''Sta ast saldan/sūru/rūgtan/kārtan/astran.''' – To jest słodkie/słone/kwaśne/gorzkie/ostre.
* '''Šī īda ast gardu/nigardu.''' – Ta potrawa jest smaczna/niesmaczna.
* '''Šī īda ast pagattawintan iz...''' – Ta potrawa jest przygotowana z...
* '''Mennei... padīnga''' – Lubię...
* '''Mennei... ni padīnga''' – Nie lubię...
* '''Ka tū kwaitīlai īstun?''' – Co chciałbyć zjeść?
* '''As kwaitīlai īstun...''' – Chciałbym zjeść...
* '''As turri kwāitan per...''' – Mam ochotę na...
* '''Majā milītasi īda ast...''' – Moja ulubiona potrawa to...
* '''Empadīngan!''' – Smacznego!
== Ćwiczenia ==
swezbku1xyobtbzhhd9keuvxx1th7iu
542346
542345
2026-05-10T10:54:10Z
Aklbmd164
37133
/* Īdas – Potrawy */
542346
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 12</big>'''</div>
== Īdis – Jedzenie ==
=== Wēišai – Owoce ===
<gallery>
File:Red Apple.jpg|'''ābli''' <52> – jabłko
File:Bowl of Blueberries (Unsplash).jpg|'''agā''' <46> – jagoda
File:Pineapple in garden.jpg|'''ānanasi''' <52> – ananas
File:Local Orange Variety of Kozan - Kozan Yerli Portakal 04.jpg|'''appelzini''' <52> – pomarańcza
File:Banana (white background).jpg|'''banāni''' <52> – banan
File:Lemon-Whole-Split.jpg|'''citrōni''' <52> – cytryna
File:Pomegranate03 edit.jpg|'''granātasabli''' <52> – granat
File:Raspberries05.jpg|'''kamisteni''' <52> – malina
File:Kiwi aka.jpg|'''kīwi''' <52> – kiwi
File:Coconuts - single and cracked open.jpg|'''kōkusi''' <52> – kokos
File:Pear in tree 0465.jpg|'''krāušas''' <50> – gruszka ''blp'' (bez l. pojedynczej, występuje tylko w l. mnogiej)
File:Madarines white bg.jpg|'''mandarīni''' <52> – mandarynka
File:Autumn Red peaches.jpg|'''pīrziks''' <32> – brzoskwinia
File:Garden strawberry (Fragaria × ananassa).jpg|'''prasseli''' <52> – truskawka
File:Damson plum fruit.jpg|'''sliwaītas''' <45> – śliwka ''blp''
File:Starr-130830-0485-Citrullus lanatus-in half-Hawea Pl Olinda-Maui (25166802001).jpg|'''undasmelōni''' <52> – arbuz
File:Table grapes on white.jpg|'''wīnega''' <45> – winogrono
File:02024 May Duke Cherry, Beskids mts.jpg|'''wisnaītas''' <45> – wiśnia ''blp''
</gallery>
=== Saknis – Warzywa ===
<gallery>
File:Phaseolus vulgaris white beans, witte boon.jpg|'''babba''' <45> – fasola
File:Broccoli and cross section edit.jpg|'''brukōlis''' <40> – brokuł
File:Potato var. Linda HC1.JPG|'''bulwi''' <52> – ziemniak
File:Carrots.JPG|'''burkans''' <32> – marchewka
File:CourgettesInBowl.JPG|'''cukīni''' <52> – cukinia
File:Cucumber from Denmark.jpg|'''gurki''' <52> – ogórek
File:Pisum sativum Горох лущильний - зелений горошок.jpg|'''kekkers''' <33> – groszek
File:CabbageBG.JPG|'''kumstas''' <32> – kapusta
File:Chou-fleur 02.jpg|'''kweitākumstas''' <32> – kalafior
File:Corn 001.jpg|'''majjiss''' <32> – kukurydza
File:Red capsicum and cross section.jpg|'''paprika''' <45> – papryka
File:Beets-Bundle.jpg|'''rūnkeli''' <50> – burak
File:Kropsla herfst.jpg|'''salāts''' <32> – sałata
File:Onions.jpg|'''sippeli''' <52> – cebula
File:Bright red tomato and cross section02.jpg|'''tōmati''' <52> – pomidor
</gallery>
=== Pūwjai – Napoje ===
<gallery>
File:Cup of tea isolated on white background - Petr Kratochvil (cropped).jpg|'''tējs''' <32> – herbata
File:Milk glass.jpg|'''daddan''' <35> – mleko
File:Orange juice (3249410157).jpg|'''saks''' <36> – sok
File:Glass Half Full bw 1.JPG|'''undan''' <35> – woda
File:Drinking glass 00118.gif|'''gazītan undan''' <35> – woda gazowana
File:Cup of coffee (Serbian cuisine, Grand kava).jpg|'''kafējs''' <32> – kawa
File:Bottle, Wine (Italiano Spumante) (48709467566).jpg|'''wīns''' <32> – wino
File:Red Wine Glass.jpg|'''wūrmiwins''' <32> – czerwone wino
File:White Wine Glas.jpg|'''gaīlawins''' <32> – białe wino
File:NCI Visuals Food Beer.jpg|'''pīws''' <32> – piwo
</gallery>
=== Mēnsa, daddas prōduktai, zirnis prōduktai, preigardāi – Mięso, nabiał, produkty zbożowe, przyprawy ===
<gallery>
File:Red Meat.jpg|'''mēnsa''' <45> – mięso
File:Breakfast Ham (53273608095).jpg|'''kūmpis''' <40> – szynka
File:Podwawelska ..jpg|'''lāitin''' <37> – kiełbasa
File:WFromage.png|'''sūris''' <40> – ser żółty
File:Творог.jpg|'''glumzdi''' <52> – twaróg
File:2023 Masło w maselniczce.jpg|'''anktan''' <35> – masło
File:Turkish strained yogurt.jpg|'''jōgurts''' <32> – jogurt
File:Steamed Buckwheat on a plate.jpg|'''puttera''' <45> – kasza
File:Mjøl.jpg|'''miltan''' <35> – mąka
File:HK food ingredient texture of Alberto Poiatti Italian brand 直通粉 penne rigate yellow September 2021 SS2 02.jpg|'''nūdelis''' <52> → makaron ''blp''
File:Anadama bread (1).jpg|'''geīts''' <58> – chleb
File:13-08-31-Kochtreffen-Wien-RalfR-N3S 7849-024.jpg|'''traskeīlis''' <40> – bułka
File:Fancy raw mixed nuts macro.jpg|'''reīss''' <36> – orzech
File:Eierdoosmet10eierengevuld2010.jpg|'''pāuts''' <32> – jajko
File:Salt shaker on white background.jpg|'''sāls''' <60> – sól
File:Black Pepper IMG 4866.jpg|'''pippars''' <32> – pieprz
File:Heinz Tomato Ketchup (51266256693).jpg|'''ketšups''' <32> – keczup
File:Zaanse mayonaise.jpg|'''majōnezi''' <52> – majonez
File:Los Gallitos - October 31 2022 - Sarah Stierch 03.jpg|'''pamārka''' <45> – sos
</gallery>
=== Īdas – Potrawy ===
<gallery>
File:0003 kotlet schabowy 2013, photo by Silar.JPG|'''karmenādi''' <52> – kotlet
File:Plated grilled fish (cropped).jpg|'''zuks''' <32> – ryba
File:Scrambed eggs.jpg|'''pautinni''' <52> – jajecznica
File:Egg Sandwich.jpg|'''geītka''' <45> – kanapka
File:French fries (6211716064).jpg|'''frittis''' <52> – frytki ''blp''
File:Pizza napoletana.jpg|'''picca''' <45> – pizza
File:Swedish pancakes.jpg|'''kalsā''' <46> – naleśnik, blin
File:Zupa ogórkowa - 2024.05.29.jpg|'''zuppi''' <52> – zupa
File:Rosół - 2024.11.03.jpg|'''jūsi''' <52> – rosół, bulion
File:Vegetable salad, Christmas Eve dinner in Brisbane, Australia, 2023.jpg|'''mišmašs''' <32> – sałatka jarzynowa
</gallery>
=== Saldiskāi – Słodycze ===
<gallery>
File:Sugar-485057.jpg|'''cukkeris''' <40> – cukier
File:MielCristalizada.jpg|'''meddu''' <44> – miód
File:Mermelada de frutlla.jpeg|'''kōnfitiri''', '''marmelādi''' <52> – konfitura, marmolada, dżem
File:Piece of chocolate cake on a white plate decorated with chocolate sauce.jpg|'''lūgis''' <40> – ciasto
File:Koekjestrommel open.jpg|'''kepinnis''' <52> – ciastka, herbatniki ''blp''
File:Strawberry ice cream cone (5076899310).jpg|'''ladāi''' <36> – lody
File:Green and Black's dark chocolate bar 2.jpg|'''šokōladi''' <52> – czekolada
File:2023 Cukierki Michałki klasyczne.jpg|'''bumbōns''' <32> – cukierek
File:Charms Blow Pop (2458474034).jpg|'''lučči''' <52> – lizak
</gallery>
== Odmiana czasowników ''jeść'' i ''pić'' w cz. teraźniejszym ==
* '''Īstun''' – jeść
{| style="background-color: #f5f5f5; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''īma'''
|-
|Tū '''īsei'''
|-
|Tāns/Tenā/Sta '''īst'''
|-
|Mes '''īmai'''
|-
|Jūs '''ītei'''
|-
|Tenēi/Tennas '''īst'''
|}
* '''Pūtun''' – pić
{| style="background-color: #f5f5f5; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''pūja'''
|-
|Tū '''pūja'''
|-
|Tāns/Tenā/Sta '''pūja'''
|-
|Mes '''pūjimai'''
|-
|Jūs '''pūjitei'''
|-
|Tenēi/Tennas '''pūja'''
|}
== Przydatne wyrażenia ==
* '''Per brōkastin/pussideinan/bitasīdin as īma...''' – Na śniadanie/obiad/kolację jem...
* '''Sta ast saldan/sūru/rūgtan/kārtan/astran.''' – To jest słodkie/słone/kwaśne/gorzkie/ostre.
* '''Šī īda ast gardu/nigardu.''' – Ta potrawa jest smaczna/niesmaczna.
* '''Šī īda ast pagattawintan iz...''' – Ta potrawa jest przygotowana z...
* '''Mennei... padīnga''' – Lubię...
* '''Mennei... ni padīnga''' – Nie lubię...
* '''Ka tū kwaitīlai īstun?''' – Co chciałbyć zjeść?
* '''As kwaitīlai īstun...''' – Chciałbym zjeść...
* '''As turri kwāitan per...''' – Mam ochotę na...
* '''Majā milītasi īda ast...''' – Moja ulubiona potrawa to...
* '''Empadīngan!''' – Smacznego!
== Ćwiczenia ==
hivkxmpo8dc6kwnwyujg5br0wpzqwxt
542351
542346
2026-05-10T11:30:25Z
Aklbmd164
37133
/* Odmiana czasowników jeść i pić w cz. teraźniejszym */
542351
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 12</big>'''</div>
== Īdis – Jedzenie ==
=== Wēišai – Owoce ===
<gallery>
File:Red Apple.jpg|'''ābli''' <52> – jabłko
File:Bowl of Blueberries (Unsplash).jpg|'''agā''' <46> – jagoda
File:Pineapple in garden.jpg|'''ānanasi''' <52> – ananas
File:Local Orange Variety of Kozan - Kozan Yerli Portakal 04.jpg|'''appelzini''' <52> – pomarańcza
File:Banana (white background).jpg|'''banāni''' <52> – banan
File:Lemon-Whole-Split.jpg|'''citrōni''' <52> – cytryna
File:Pomegranate03 edit.jpg|'''granātasabli''' <52> – granat
File:Raspberries05.jpg|'''kamisteni''' <52> – malina
File:Kiwi aka.jpg|'''kīwi''' <52> – kiwi
File:Coconuts - single and cracked open.jpg|'''kōkusi''' <52> – kokos
File:Pear in tree 0465.jpg|'''krāušas''' <50> – gruszka ''blp'' (bez l. pojedynczej, występuje tylko w l. mnogiej)
File:Madarines white bg.jpg|'''mandarīni''' <52> – mandarynka
File:Autumn Red peaches.jpg|'''pīrziks''' <32> – brzoskwinia
File:Garden strawberry (Fragaria × ananassa).jpg|'''prasseli''' <52> – truskawka
File:Damson plum fruit.jpg|'''sliwaītas''' <45> – śliwka ''blp''
File:Starr-130830-0485-Citrullus lanatus-in half-Hawea Pl Olinda-Maui (25166802001).jpg|'''undasmelōni''' <52> – arbuz
File:Table grapes on white.jpg|'''wīnega''' <45> – winogrono
File:02024 May Duke Cherry, Beskids mts.jpg|'''wisnaītas''' <45> – wiśnia ''blp''
</gallery>
=== Saknis – Warzywa ===
<gallery>
File:Phaseolus vulgaris white beans, witte boon.jpg|'''babba''' <45> – fasola
File:Broccoli and cross section edit.jpg|'''brukōlis''' <40> – brokuł
File:Potato var. Linda HC1.JPG|'''bulwi''' <52> – ziemniak
File:Carrots.JPG|'''burkans''' <32> – marchewka
File:CourgettesInBowl.JPG|'''cukīni''' <52> – cukinia
File:Cucumber from Denmark.jpg|'''gurki''' <52> – ogórek
File:Pisum sativum Горох лущильний - зелений горошок.jpg|'''kekkers''' <33> – groszek
File:CabbageBG.JPG|'''kumstas''' <32> – kapusta
File:Chou-fleur 02.jpg|'''kweitākumstas''' <32> – kalafior
File:Corn 001.jpg|'''majjiss''' <32> – kukurydza
File:Red capsicum and cross section.jpg|'''paprika''' <45> – papryka
File:Beets-Bundle.jpg|'''rūnkeli''' <50> – burak
File:Kropsla herfst.jpg|'''salāts''' <32> – sałata
File:Onions.jpg|'''sippeli''' <52> – cebula
File:Bright red tomato and cross section02.jpg|'''tōmati''' <52> – pomidor
</gallery>
=== Pūwjai – Napoje ===
<gallery>
File:Cup of tea isolated on white background - Petr Kratochvil (cropped).jpg|'''tējs''' <32> – herbata
File:Milk glass.jpg|'''daddan''' <35> – mleko
File:Orange juice (3249410157).jpg|'''saks''' <36> – sok
File:Glass Half Full bw 1.JPG|'''undan''' <35> – woda
File:Drinking glass 00118.gif|'''gazītan undan''' <35> – woda gazowana
File:Cup of coffee (Serbian cuisine, Grand kava).jpg|'''kafējs''' <32> – kawa
File:Bottle, Wine (Italiano Spumante) (48709467566).jpg|'''wīns''' <32> – wino
File:Red Wine Glass.jpg|'''wūrmiwins''' <32> – czerwone wino
File:White Wine Glas.jpg|'''gaīlawins''' <32> – białe wino
File:NCI Visuals Food Beer.jpg|'''pīws''' <32> – piwo
</gallery>
=== Mēnsa, daddas prōduktai, zirnis prōduktai, preigardāi – Mięso, nabiał, produkty zbożowe, przyprawy ===
<gallery>
File:Red Meat.jpg|'''mēnsa''' <45> – mięso
File:Breakfast Ham (53273608095).jpg|'''kūmpis''' <40> – szynka
File:Podwawelska ..jpg|'''lāitin''' <37> – kiełbasa
File:WFromage.png|'''sūris''' <40> – ser żółty
File:Творог.jpg|'''glumzdi''' <52> – twaróg
File:2023 Masło w maselniczce.jpg|'''anktan''' <35> – masło
File:Turkish strained yogurt.jpg|'''jōgurts''' <32> – jogurt
File:Steamed Buckwheat on a plate.jpg|'''puttera''' <45> – kasza
File:Mjøl.jpg|'''miltan''' <35> – mąka
File:HK food ingredient texture of Alberto Poiatti Italian brand 直通粉 penne rigate yellow September 2021 SS2 02.jpg|'''nūdelis''' <52> → makaron ''blp''
File:Anadama bread (1).jpg|'''geīts''' <58> – chleb
File:13-08-31-Kochtreffen-Wien-RalfR-N3S 7849-024.jpg|'''traskeīlis''' <40> – bułka
File:Fancy raw mixed nuts macro.jpg|'''reīss''' <36> – orzech
File:Eierdoosmet10eierengevuld2010.jpg|'''pāuts''' <32> – jajko
File:Salt shaker on white background.jpg|'''sāls''' <60> – sól
File:Black Pepper IMG 4866.jpg|'''pippars''' <32> – pieprz
File:Heinz Tomato Ketchup (51266256693).jpg|'''ketšups''' <32> – keczup
File:Zaanse mayonaise.jpg|'''majōnezi''' <52> – majonez
File:Los Gallitos - October 31 2022 - Sarah Stierch 03.jpg|'''pamārka''' <45> – sos
</gallery>
=== Īdas – Potrawy ===
<gallery>
File:0003 kotlet schabowy 2013, photo by Silar.JPG|'''karmenādi''' <52> – kotlet
File:Plated grilled fish (cropped).jpg|'''zuks''' <32> – ryba
File:Scrambed eggs.jpg|'''pautinni''' <52> – jajecznica
File:Egg Sandwich.jpg|'''geītka''' <45> – kanapka
File:French fries (6211716064).jpg|'''frittis''' <52> – frytki ''blp''
File:Pizza napoletana.jpg|'''picca''' <45> – pizza
File:Swedish pancakes.jpg|'''kalsā''' <46> – naleśnik, blin
File:Zupa ogórkowa - 2024.05.29.jpg|'''zuppi''' <52> – zupa
File:Rosół - 2024.11.03.jpg|'''jūsi''' <52> – rosół, bulion
File:Vegetable salad, Christmas Eve dinner in Brisbane, Australia, 2023.jpg|'''mišmašs''' <32> – sałatka jarzynowa
</gallery>
=== Saldiskāi – Słodycze ===
<gallery>
File:Sugar-485057.jpg|'''cukkeris''' <40> – cukier
File:MielCristalizada.jpg|'''meddu''' <44> – miód
File:Mermelada de frutlla.jpeg|'''kōnfitiri''', '''marmelādi''' <52> – konfitura, marmolada, dżem
File:Piece of chocolate cake on a white plate decorated with chocolate sauce.jpg|'''lūgis''' <40> – ciasto
File:Koekjestrommel open.jpg|'''kepinnis''' <52> – ciastka, herbatniki ''blp''
File:Strawberry ice cream cone (5076899310).jpg|'''ladāi''' <36> – lody
File:Green and Black's dark chocolate bar 2.jpg|'''šokōladi''' <52> – czekolada
File:2023 Cukierki Michałki klasyczne.jpg|'''bumbōns''' <32> – cukierek
File:Charms Blow Pop (2458474034).jpg|'''lučči''' <52> – lizak
</gallery>
== Odmiana czasowników ''jeść'' i ''pić'' w cz. teraźniejszym ==
* '''Īstun''' – jeść
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''īma'''
|-
|Tū '''īsei'''
|-
|Tāns/Tenā/Sta '''īst'''
|-
|Mes '''īmai'''
|-
|Jūs '''ītei'''
|-
|Tenēi/Tennas '''īst'''
|}
* '''Pūtun''' – pić
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''pūja'''
|-
|Tū '''pūja'''
|-
|Tāns/Tenā/Sta '''pūja'''
|-
|Mes '''pūjimai'''
|-
|Jūs '''pūjitei'''
|-
|Tenēi/Tennas '''pūja'''
|}
== Przydatne wyrażenia ==
* '''Per brōkastin/pussideinan/bitasīdin as īma...''' – Na śniadanie/obiad/kolację jem...
* '''Sta ast saldan/sūru/rūgtan/kārtan/astran.''' – To jest słodkie/słone/kwaśne/gorzkie/ostre.
* '''Šī īda ast gardu/nigardu.''' – Ta potrawa jest smaczna/niesmaczna.
* '''Šī īda ast pagattawintan iz...''' – Ta potrawa jest przygotowana z...
* '''Mennei... padīnga''' – Lubię...
* '''Mennei... ni padīnga''' – Nie lubię...
* '''Ka tū kwaitīlai īstun?''' – Co chciałbyć zjeść?
* '''As kwaitīlai īstun...''' – Chciałbym zjeść...
* '''As turri kwāitan per...''' – Mam ochotę na...
* '''Majā milītasi īda ast...''' – Moja ulubiona potrawa to...
* '''Empadīngan!''' – Smacznego!
== Ćwiczenia ==
afs5oeodzgcljh22fxq2dguoebei6wg
Pruski/Lekcja13
0
61048
542347
541932
2026-05-10T11:15:19Z
Aklbmd164
37133
/* Przydatne wyrażenia */
542347
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 13</big>'''</div>
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – iść
{| style="background-color: #f5f5f5; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – pracować
{| style="background-color: #f5f5f5; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
== Ćwiczenia ==
7czl83q1fkkelxgfy56inugufnmjyzk
542348
542347
2026-05-10T11:26:14Z
Aklbmd164
37133
/* Przydatne wyrażenia */
542348
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 13</big>'''</div>
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – iść
{| style="background-color: #f5f5f5; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – pracować
{| style="background-color: #f5f5f5; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
* '''Etwinūis, kāigi as mazzi preikakīntun si prei ...''' – Przepraszam, jak mogę dotrzeć do...
* '''Jaīs tikriskai be panzdau wartinnais si prei tikrai/kāirai''' – Idź prosto, a następnie skręć w prawo/lewo.
== Ćwiczenia ==
alvwqe6gindhx65co18c6nr6a8kv0rt
542349
542348
2026-05-10T11:28:56Z
Aklbmd164
37133
/* Odmiana czasowników iść i pracować w cz. teraźniejszym */
542349
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 13</big>'''</div>
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – iść
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – pracować
{| style="background-color: #f5f5f5; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
* '''Etwinūis, kāigi as mazzi preikakīntun si prei ...''' – Przepraszam, jak mogę dotrzeć do...
* '''Jaīs tikriskai be panzdau wartinnais si prei tikrai/kāirai''' – Idź prosto, a następnie skręć w prawo/lewo.
== Ćwiczenia ==
jqcuvch6wxil23hxybbh0m5z14mhw7i
542350
542349
2026-05-10T11:29:26Z
Aklbmd164
37133
/* Odmiana czasowników iść i pracować w cz. teraźniejszym */
542350
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 13</big>'''</div>
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – iść
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – pracować
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
* '''Etwinūis, kāigi as mazzi preikakīntun si prei ...''' – Przepraszam, jak mogę dotrzeć do...
* '''Jaīs tikriskai be panzdau wartinnais si prei tikrai/kāirai''' – Idź prosto, a następnie skręć w prawo/lewo.
== Ćwiczenia ==
5tltqatvx2mlbgas535un1e0l2go2qq
542352
542350
2026-05-10T11:40:46Z
Aklbmd164
37133
/* Przydatne wyrażenia */
542352
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 13</big>'''</div>
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – iść
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – pracować
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
* '''En perejīngiskwai as kwāi wīrstwei...''' – W przyszłości chcę zostać...
* '''Etwinūis, kāigi as mazzi preikakīntun si prei ...''' – Przepraszam, jak mogę dotrzeć do...
* '''Jaīs tikriskai be panzdau wartinnais si prei tikrai/kāirai''' – Idź prosto, a następnie skręć w prawo/lewo.
== Ćwiczenia ==
fmy2pyy92vfe5wf97qk8gcp3s84sq3v
542353
542352
2026-05-10T11:42:45Z
Aklbmd164
37133
/* Przydatne wyrażenia */
542353
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 13</big>'''</div>
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – iść
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – pracować
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
* '''En perejīngiskwai as kwāi wīrstwei...''' – W przyszłości chcę zostać...
* '''Etwinūis, kāigi as mazzi preikakīntun si prei...''' – Przepraszam, jak mogę dotrzeć do...
* '''Jaīs tikriskai be panzdau wartinnais si prei tikrai/kāirai''' – Idź prosto, a następnie skręć w prawo/lewo.
== Ćwiczenia ==
cqi83anzf2d5ed5gmda2wiicmk6c109
542356
542353
2026-05-10T11:58:03Z
Aklbmd164
37133
542356
wikitext
text/x-wiki
<div style="color:blue">'''<big>Lakciōni 13</big>'''</div>
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Tworzenie nazw żeńskich ==
Nazwy żeńskie tworzy się w języku pruskim na trzy główne sposoby:
* ''-tajs'' ⇒ ''-taja'', np. perdātajs ⇒ perdātaja
* ''-s/-is'' ⇒ ''-ini'', np. bibliōtekars ⇒ bibliōtekarini
* ''-is'' ⇒ ''-i'', np. mukinnewis ⇒ mukinnewi
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – iść
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – pracować
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
* '''En perejīngiskwai as kwāi wīrstwei...''' – W przyszłości chcę zostać...
* '''Etwinūis, kāigi as mazzi preikakīntun si prei...''' – Przepraszam, jak mogę dotrzeć do...
* '''Jaīs tikriskai be panzdau wartinnais si prei tikrai/kāirai''' – Idź prosto, a następnie skręć w prawo/lewo.
== Ćwiczenia ==
qmgskwhvmkt6oi580l6xymtuk2p0f3d
Wikipedysta:Persino/brudnopis11
2
62939
542342
541602
2026-05-09T22:33:01Z
Persino
2851
542342
wikitext
text/x-wiki
{{Nowiki|{{Link wewnętrzny|strona=Pomoc:Spis treści|uri=tak}}}}
----
{{Nowiki|{{WydobądźLinki|{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}}}}}
----
{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}
----
{{WydobądźLinki|{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}}}
{{PobierzNumerArtykułu|Muzyka|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Estoński/Muzyka}}
---
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Szablony edycji - błędy wywołań}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony ze złymi uchwytami do obiektów}}}}
----
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Brak licencji, na stronach głównych, publikacji}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Brakujące spisy treści, dołączonych do stron, stron w innych książkach}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony z dołączonymi innymi stronami, w książkach, z obiektami ze złymi uchwytami}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony z wypowiedzeniami ze złymi uchwytami}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony ze złymi uchwytami do nagłówków}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Artykusły2 dla dzieci2, ze złymi uchwytami do nagłówków}}}}
{{sr|#m["PEŁNANAZWAKSIĄŻKI"]()|p=Nazwy - Tom IV}}
{{Nowiki|{{lpg|Stołeczne Terytorium Islamabadu|a=}}}}
{{Nowiki|{{lpg|Stołeczne Terytorium Islamabadu|a=tak}}}}
----
{{#invoke:Pudełko|Nazwa przedmiotowa jednostki 3|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}
----
{{#invoke:Pudełko|Typ jednostki|typ jednostki=podręcznik dyskusji|dyskusja typu jednostki=}}
{{DNUinfo|nazwa przestrzeni nazw=MojaPrzestrzeń}}
== tytan ==
{{Śródtytuł|tytan}}
5bo3uvfspq3b0z61liaqrxtt2fvvja5
Wikibooks:Moduły/StronicowyParser/Tekst
4
63524
542289
542288
2026-05-09T12:00:29Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542289
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** {{Code|__FUNKCJA4}} -
** {{Code|__FUNKCJA5}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
dbhmfbtkvq9vl8p4fvswhos2jthiye5
542290
542289
2026-05-09T12:07:58Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542290
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** {{Code|__FUNKCJA4}} -
** {{Code|__FUNKCJA5}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gr1ugfmpbslvgvok3skx15rcl3z9ext
542291
542290
2026-05-09T12:41:33Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542291
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3i8ee1ish9fqa2n6dqtk9rst1r3ba6u
542292
542291
2026-05-09T12:55:16Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542292
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}} w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rk38f7fci5fut1ni0yaeo3008549i6d
542293
542292
2026-05-09T13:01:13Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542293
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}} w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rlxmgnbrjqhv3xpr78m07r6t7zqzoxh
542294
542293
2026-05-09T13:12:04Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542294
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}} w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
q2whg4w5wy4djgurwsdd9yu6dzu6ns9
542295
542294
2026-05-09T13:12:59Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542295
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}} w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hy2ln8utiskgjns1rbz2lw7krcfc6h2
542296
542295
2026-05-09T13:20:09Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542296
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}} w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sqfhjqexvabmy6unknsqqcvuyfhi89r
542297
542296
2026-05-09T13:20:29Z
Persino
2851
542297
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}} w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ni4mu51tc45akjhvpimv48b1ikw4r3z
542298
542297
2026-05-09T14:02:29Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542298
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
p3o0bjexswz2g2e1l8ztucg8mc90i0g
542299
542298
2026-05-09T14:16:12Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542299
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe, bez prawego myślnika w pełnych nazwach artykułów książkowych, te które należy rozwinąc jeszcze dalej. Np. w na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
k2a174gv3zl8emlf7ni11uyhfvzyk1w
542300
542299
2026-05-09T15:35:24Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542300
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc jeszcze w wikikodzie w szablonie, wtedy {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}} według funkcji {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}. Np. w na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sf467s1bk52d1aqb2rzm3jdv13kjb74
542301
542300
2026-05-09T15:37:49Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542301
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej przechodząc do szablonów w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}} według funkcji {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}. Np. w na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
d7yn005iqnmnb2mr9kxoz6398uu09gr
542302
542301
2026-05-09T15:49:58Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542302
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do szablonów w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}. Np. w na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4jhip42b7viwc41mm35v1jhq0ttaj8r
542303
542302
2026-05-09T15:55:03Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542303
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{s|Dokumentacja|zawartość{{=}}}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
610rmabyx4pbg50bphcf41rod2q5deo
542304
542303
2026-05-09T15:59:08Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542304
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
d97bshwniywt1puo25dshb4lyh0py98
542305
542304
2026-05-09T16:08:59Z
Persino
2851
/* {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} */
542305
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5j61kuiodlh4p39l239koqdt6qlmlc3
542306
542305
2026-05-09T16:11:25Z
Persino
2851
/* {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} */
542306
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3heb0bcxktcrrws4sugvzv7o1y3864z
542307
542306
2026-05-09T16:13:27Z
Persino
2851
/* {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} */
542307
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
terv9yz9yz7bnj5q2y6toducvne39mo
542308
542307
2026-05-09T16:14:44Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542308
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
faj97fc2onsi79tijxa455kmxxkyevx
542309
542308
2026-05-09T16:16:58Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542309
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} -
* {{Code|inkludowana}} {{Patrz|inkludowana}} -
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} -
** {{Code|__FUNKCJA2}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} -
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} -
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3p75kucljycz92q2ij66or4zxaaghq9
542310
542309
2026-05-09T16:18:24Z
Persino
2851
542310
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} -
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} -
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} -
** {{Code|__FUNKCJA2}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} -
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} -
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pfz5k0u778ojv8fzmegog3ih4pqw4tv
542311
542310
2026-05-09T16:27:36Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542311
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretpwana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} -
** {{Code|__FUNKCJA2}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - fubkcja użyta tablicy bazy kodów.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
099tjxhl1el0jward72ot4gcmx47bpa
542312
542311
2026-05-09T16:30:35Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542312
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje opisane w punkcie w opisie wykorzystywanej głównej funkcji, powyżej w linku.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} -
** {{Code|__FUNKCJA2}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
kgbyat0l8bzif1jipghvulyoc77drrs
542313
542312
2026-05-09T16:33:21Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542313
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji uzyskiwania nazw szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji poniżej:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} -
** {{Code|__FUNKCJA2}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5lkurl00gtofs2p2qkwscwowoc8ypay
542314
542313
2026-05-09T16:36:10Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542314
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} i {{Code|__FUNKCJA5}}, definicje tych funkcji:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} -
** {{Code|__FUNKCJA2}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fl9sp3uc7x6rvh83niqfe09wk40xkgo
542315
542314
2026-05-09T16:39:18Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542315
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} i {{Code|__FUNKCJA2}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} -
** {{Code|__FUNKCJA2}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gvuxk2i4y8r5c4uwgujgk5fmyzt1yg9
542316
542315
2026-05-09T16:44:29Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542316
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} -
** {{Code|__FUNKCJA2}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0j9psv5bvkamcyh4gxpngf6la5o2p36
542317
542316
2026-05-09T16:56:35Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542317
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} -
** {{Code|__FUNKCJA2}} -
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
shvan1zfnogvtssayrblfo5cq45y065
542318
542317
2026-05-09T17:39:00Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542318
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania na podstawie pełnej nazwy strony, w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca na podstawie zawartości inną zawartość, używana w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostału już opisane w tymmodule, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(szablon,co,numer_szablonu_co,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|co}} - nazwa obiektu,
* {{Code|numer_szablonu_co}} - numer_szablonu dla daanego obiektu,
* {{Code|tekst_artykulu}} - tekst całego artykułu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|numer_szablonu}} - tabela numerów dla danych obiektów.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sui7tqkjmxl1q3dkzqhicv65mjzm82r
542319
542318
2026-05-09T17:47:26Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542319
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania na podstawie pełnej nazwy strony, w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca na podstawie zawartości inną zawartość, używana w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostału już opisane w tymmodule, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
aztfb0pmtesu0muxccmxgotg75zx1g5
542320
542319
2026-05-09T18:26:55Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542320
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|__FUNKCJA-KodowanieSzablonowegoTekstuZObiektamiWikikodu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej zawartości, używana w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|FUNKCJA2-FunkcjaIterajacaRozwijanegoSzablonu}}, w postaci na podstawie jej zmodyfikowanej wersji,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostału już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1ex3e1p93mu3b201vp10sephpdkqvck
542322
542320
2026-05-09T18:55:27Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542322
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej zawartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci na podstawie jej zmodyfikowanej wersji,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostału już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
p3cwtxt23q1da7bm999jwc4vjuc7h4x
542323
542322
2026-05-09T18:59:36Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542323
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej zawartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci na podstawie jej zmodyfikowanej wersji,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
byn5kvxwezsoqa6zmr7cuhhu84d3ha8
542324
542323
2026-05-09T19:07:32Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542324
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej zawartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, do formowania funkcji: {{Code|__FUNKCJA2}}, w niej, na podstawie zmodyfikowanej wersji tej funkcji,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
kqddith2ltyk4bzq9fbuz8bjbmkcat5
542325
542324
2026-05-09T19:08:49Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542325
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, do formowania funkcji: {{Code|__FUNKCJA2}}, w niej, na podstawie zmodyfikowanej wersji tej funkcji,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5i3pxcs590wvhqxrhn5v1ez0d8m5mfq
542326
542325
2026-05-09T19:11:47Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542326
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, do formowania nowej wersji tej funkcji, czyli: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
mlkz882chdhve66yyv5slyfo8l2evw6
542327
542326
2026-05-09T19:13:27Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542327
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
l9z4fu5ej60w0ftw9qmdnxbqcximog3
542328
542327
2026-05-09T19:18:17Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542328
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
h221szkoa937icbbjw8byxz7nboilxy
542329
542328
2026-05-09T19:19:14Z
Persino
2851
Anulowano wersję [[Special:Diff/542328|542328]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
542329
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
l9z4fu5ej60w0ftw9qmdnxbqcximog3
542330
542329
2026-05-09T19:50:29Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542330
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja kozrsyta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7zucx7emo8cktncb00bu8atf106h1bk
542331
542330
2026-05-09T19:51:19Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542331
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
is665ek6txr7323lo0tv2cel2pzk3gs
542332
542331
2026-05-09T20:11:31Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542332
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkwych nie ma klamerek.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
dvfyzx6k719onu8khzg6get1l3e61jj
542333
542332
2026-05-09T20:14:24Z
Persino
2851
/* Kolejność wywoływania elementów funkcji */
542333
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkwych nie ma klamerek.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
8e5tbe6nbye45xj6ok1jv04671gvley
542334
542333
2026-05-09T20:14:37Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542334
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerekw funkcji, z której ona korzysta, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
p2ugwc5x0rxmwd9kzi33gwh7rn3ry3d
542335
542334
2026-05-09T20:17:57Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542335
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fj3zs5hmjdm4ggsm6opb9zrtnnbezyx
542336
542335
2026-05-09T20:42:16Z
Persino
2851
/* {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} */
542336
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7v059qgvw28xe2j2jd6a3dlj45juyps
542337
542336
2026-05-09T20:47:41Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542337
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cejlbyyhtushzvaslbfli8wiphhdkzr
542338
542337
2026-05-09T20:56:21Z
Persino
2851
/* {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} */
542338
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, tojest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami, te funkcje są wywoływane wewnątrz funkcji: {{Code|{{sr|#p.SpreparowanyWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cko4abubdtt3fnyarzegr83ozwt381a
542339
542338
2026-05-09T21:18:31Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542339
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji {{Patrz|DekodowanieNazwySzablonu}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{Patrz|RozwijanieZakodowanejNazwySzablonu}}, jeżeli z korzystanej tutaj funkcji zrzuciło to niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i wartość: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami, te funkcje są wywoływane wewnątrz funkcji: {{Code|{{sr|#p.SpreparowanyWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
tupebwde2we56m48129eeerjborrkss
542340
542339
2026-05-09T21:22:25Z
Persino
2851
542340
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu}}, jeżeli z korzystanej tutaj funkcji zrzuciło to niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i wartość: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami, te funkcje są wywoływane wewnątrz funkcji: {{Code|{{sr|#p.SpreparowanyWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
a5r93riczdozig6f8pz2wfbin0ng42e
542341
542340
2026-05-09T21:30:30Z
Persino
2851
/* {{Code|p.SpreparowanyWikikodStrony(self,...)}} */
542341
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Tekst}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.SpreparowanyWikikodStrony(self,...)}} ==
Funkcja sciagące opisy szablonów ze strony szablonów, nie opisów, czy ze strony modułów ich opisy, a jeżeli tego opisu nie ma, to funkcja zwraca wartość {{Code|nil}}. A jeżeli tego nie ma w przypadku szablonów, to opisy z parametru {{Parametr|zawartość}} z wywołania: {{s|Dokumentacja|zawartość{{=}}...}}. Funkcja też ściąga zawartości stron szablonów, jeżeli na stronie szablonu jest szablon jego opisu, np. w postaci: {{Code|{{s|Nazwa szablonu/opis}}}}, to wtedy uzyskujemy jego zawartość w wyniku. Ma możliwości ściągania zawartości stron, jeżeli one istnieją, z innych przestrzeni nazw.
Jest to szablon ogólny do ogólnego ścigania stron z różnych przestrzeni, w takim przypadku nie ma potrzeby ściągania zawartości stron, tworząc skomplikowany algorytm dla każdego typu przestrzeni i zawartości, wystarczy ta funkcja.
Funkcja w opisach szablonów, a w niej instrukcje warunkowe podczas kodowania są rozwijane przy pomocy funkcji: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}}, a normalnie, gdy wewnątrz instrukcji warunkowych nie ma klamerek w funkcji, w składowej funkcji, tzn.: {{LinkPatrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SpreparowanyWikikodStrony(self,nazwa_modulu,dokumentacja,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Funkcja korzysta bezpośrednio z funkcji: {{Code|{{sr|#p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}.
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - parametr obiektowy funkcji, potrzebne do tabeli błędów w funkcji najważniej, która jest wykorzystywana,
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa strony szablonu, modułu lub ich opisów, i stron w innych przestrzeniach nazw,
* {{Code|dokumentacja}} {{LinkPatrz|dokumentacja}} - przy wartości {{Code|true}}, tego parametru, wtedy funkcja nie koduje wewnętrznie przetwarzanej strony,
* {{Code|inkludowana}} {{Patrz|inkludowana}} - przy wartości {{Code|true}}, tego parametru, wtedy strona zachowuje się jak inkludowana, przeciwny parametr do {{Code|czy_noinclude}}, jak w funkcji powyżej,
* Twory funkcyjne lub przyjmowane wartości {{Code|nil}}, zatem:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-SpreparowanyWikikodStrony}} - funkcja przekształcające podany tekst, robiąc na nim pewne operacje, na samym końcu przetwarzania, bo kodowaniu, jeśli istnieje, przed samym zwróceniem wyniku,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-SpreparowanyWikikodStrony}} - jeśli {{Code|dokumentacja}}{{=}} {{Code|true}} - wtedy ta funkcja jest używana do sprawdzenia, czy dany tekst, w końcowym etapie, kodować,
** {{Code|__FUNKCJA3}} {{Patrz|__FUNKCJA3-SpreparowanyWikikodStrony}} - funkcja uzyskująca tablicę danych parametrów rozkładania tworów szablonowych w {{Code|{{m|Szablonowe}}}},
** Funkcje używane w funkcji, potrzebne do konstrukcji funkcji przyjmowanych w: {{Code|{{sr|#p["UstalanieNazwyWywołania"]()|p=Szablonowe}}}} {{Patrz|UstalanieNazwyWywołania}}:
*** {{Code|__FUNKCJA4}} {{Patrz|__FUNKCJA4-SpreparowanyWikikodStrony}} - funkcja, np. dekodująca nazwę szablonu,
*** {{Code|__FUNKCJA5}} {{Patrz|__FUNKCJA5-SpreparowanyWikikodStrony}} - funkcja, np. rozwijająca nazwę szablonu,
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - funkcja do modyfikacji tekstu pobranego ze strony,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcje do generowania tablicy bazy kodów.
Definicje funkcji: {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-UstalanieNazwyWywołania}} i {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-UstalanieNazwyWywołania}}, które są potrzebne do konstrukcji wywołania funkcji: {{LinkPatrz|UstalanieNazwyWywołania}}, uzyskiwania nazwy szablonu i jego modyfikatorów, względem tej funkcji w nagłówku ze zmiennymi: {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} i {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}}, definicje tych funkcji:
* {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(nazwa_szablonu)
if(__FUNKCJA4)then
return __FUNKCJA4(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]]);
end;
end;
</syntaxhighlight>
* {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-UstalanieNazwyWywołania}}:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(nazwa_szablonu,tabela_modyfikatorow)
return __FUNKCJA5 and __FUNKCJA5(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,dokumentacja,czy_nie_opis)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - przetwarzany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}},
* {{Code|dokumentacja}} - jeśli {{Code|true}}, wtedy kodowanie nie nastąpi,
* {{Code|czy_nie_opis}} - czy to nie jest opis szablonu, czy modułu, wtedy ta zmienna powinna przyjmować wartość {{Code|true}}, w przeciwnym razie {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
tekst_artykulu_caly=__FUNKCJA and __FUNKCJA(tekst_artykulu_caly,nazwa_modulu,nil,dokumentacja,true) or tekst_artykulu_caly;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu_caly}} - przetwarzaany tekst,
* {{Code|nazwa_modulu}} - nazwa modułu, przetwarzany uchwyt, modułu: {{Code|{{ld2|Szablonowe}}}},
* {{Code|tablica_obiektow_strony_dany_modul}} - tabela kodów bazy: {{Code|{{m|Szablonowe}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(dokumentacja and ((not __FUNKCJA2) and true or __FUNKCJA2(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)))then
tekst_artykulu_caly=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA3}} {{LinkPatrz|__FUNKCJA3-SpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA3=function(nazwa_modulu)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_modulu}} - nazwa modułu, jako uchwyt, z którego uzyskujemy tablicę parametrów: {{Code|tablica_danych_parametrow_szablonu_strony}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tablica_danych_parametrow_szablonu_strony=__FUNKCJA3 and __FUNKCJA3(nazwa_modulu) or nil;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA4}} {{LinkPatrz|__FUNKCJA4-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA4=function(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony--[[,czy_uwzgledniac_modyfikatory]])
... --- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinięcia,
* {{Code|nazwa_modulu}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie,
* Gdy tą funkcją jest {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}} {{Patrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}}, ta zmienna bezpośrednio w: {{Code|__FUNKCJA4}}, nie występuje, ale za to występuje w tej podanej szczególnej przykładowej funkcji:
** {{Code|czy_uwzgledniac_modyfikatory}} - czy ma uwzględniać modyfikatory, pierwsza zwracana zmienna jest: {{Code|nil}}, a druga: {{Code|false}},
Jeżeli w funkcji {{LinkPatrz|DekodowanieNazwySzablonu-SpreparowanyWikikodStrony}} nie wykryto kodów, to ona zwraca wartość pierwszą: {{Code|nil}}, drugą: {{Code|true}}. Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}} w przeciwnym wypadku zwracane jest nazwa szablonu i wartość {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA4=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA5}} {{LinkPatrz|__FUNKCJA5-SpreparowanyWikikodStrony}} ma np. definicję:
<syntaxhighlight lang="lua">
local=__FUNKCJA5=function(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_szablonu}} - nazwa szablonu do rozwinicia po rozwinięciu przez funkcję: {{Code|__FUNKCJA4}}:
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów uzyskana podczas rozkładu na modyfikatory i nazwę szablonu, jeżeli funkcja ma modyfikatory warunkowe, czy jest szablonem, to jest zwracana wartość pierwsza: {{Code|nil}}, druga: {{Code|false}}, w przypadku: {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - nazwa modułu, uchwyt do funkcji w {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy tego modułu,jak wyżej,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów potrzebna do szybszego uzyskiwania parametrów z rozkłądów elementówna czynniki pierwsze niż normalnie.
: Gdy tą funkcją jest: {{Code|{{sr|#p.RozwijanieZakodowanejNazwySzablonu()|p=StronicowyParser/Potrzebne}}}} {{Patrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}:
:: Na samym końcu funkcji jest wykonywane polecenie: {{Code|frame:preprocess}}, z korzystanej funkcji: {{Code|{{sr|#p.DekodowanieNazwySzablonu()|p=StronicowyParser/Potrzebne}}}}, z której korzysta {{LinkPatrz|RozwijanieZakodowanejNazwySzablonu-SpreparowanyWikikodStrony}}, jeżeli z korzystanej tutaj funkcji zrzuciło to niepowodzenie, to pierwsza wartość zwrótcone to: {{Code|nil}}, druga: {{Code|false}}, w przeciwnym wypadku zwraca nazwę rozwiniętego szablonu i wartość: {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local __FUNKCJA5=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu;
</syntaxhighlight>
== {{Code|p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,...)}} ==
Ogólna funkcja do rozwijania wikikodów, w których mieszczą się wywołania szablonowe bezparametrowe, z nazwami artykułów książkowych (według funkcji: {{Code|{{sr|#m["NAZWAARTYKUŁUKSIĄŻKI"]()|p=Nazwy/Tom IV}}}}) niepustych, te które należy rozwinąc, lub jeszcze bardziej, jeżeli ich format jest podobny, co ich rodzice, przechodząc do wywołań szablonowych w końcu zagnieżdżonych, w wikikodzie w szablonie, wtedy: {{Code|czy_niezakodowana{{=}}czy_nie_opis{{=}}true}}, według funkcji: {{Code|{{sr|#p.RozwijanieNiezakodowanegoSzablonu()|p=Szablonowe}}}}, gdy to jest zwykła przestrzeń nazw plus przestrzeń modułów, a w przypadku szablonów opisów i szablonów nie opisów jest za to używana funkcja: {{Code|{{sr|#p.RozwijanieZakodowanegoSzablonu()|p=Szablonowe}}}}, bo prawie zawsze w tym przypadku mamy do czynienia z opisami, te funkcje są wywoływane wewnątrz funkcji: {{Code|{{sr|#p.SpreparowanyWikikodStrony(self,...)|p=StronicowyParser/Tekst}}}}. Np. na stronie znajduje się wywołanie szablonowe '''spisu treści''', które w tym wikikodzie należy rozwinąc za pomocą kodowania szablonowego, by można w tak uzyskanym teście z kodami oraz tabelą kodów bazy i tabelą parametrów wykorzystać w innym elemencie w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,inkludowana,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{LinkPatrz|self}} - zmienna obiektowa,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - strona o nazwie modułu do rozwinięcia i zakodowania,
* {{Code|inkludowana}} {{LinkPatrz|inkludowana}} - zmienna, czy strona ma być interpretowana jako inkludowana,
* Zmienne funkcyjne:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja generująca zawartość, może być zmodyfikowana, na podstawie pełnej nazwy strony, używana w funkcji: jest to {{Code|__FUNKCJA3}} w: {{Code|{{sr|#FunkcjaIterajacaRozwijanegoSzablonu()|p=Szablonowe}}}} {{Patrz|__FUNKCJA-FunkcjaIterajacaRozwijanegoSzablonu}},
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} - funkcja do generowania zawartości, może być zmodyfikowana, według podanej jej wartości, używana w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|FUNKCJA2-KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, w postaci zmodyfikowanej, czyli w wersji: {{Code|__FUNKCJA2}},
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISOWA}} - inne operacje wykonywane na pobranym tekście,
** {{Code|__FUNKCJA_PARAMETRY}} {{LinkPatrz|__FUNKCJA_PARAMETRY}} - funkcja użyta do generowania tablicy bazy kodów.
Funkcje {{Code|__FUNKCJA_ANALIZA_SPISOWA}} i {{Code|__FUNKCJA_PARAMETRY}}, zostały już opisane w tym module, więc wystarczy opisać inne.
{{Hr}}
* Funkcja {{Code|__FUNKCJA}} {{LinkPatrz|__FUNKCJA-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|pelna_nazwa_szablonu}} - pełna nazwa szablonu,
* {{Code|tabela_parametrow_szablonu}} - tabela parametrów wywołania szablonu do rozwinięcia,
* {{Code|tabela_modyfikatorow}} - tabela modyfikatorów danego wywołania szablonowego.
{{Hr}}
* Funkcja {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2-RekurencyjnyZakodowanoSpreparowanyWikikodStrony}} ma definicję:
<syntaxhighlight lang="lua">
local __FUNKCJA2=function(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
... ---- ciało funkcji;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - zawartość elementu wikikodu według {{Code|{{m|Szablonowe}}}},
* {{Code|obiekt}} - nazwa obiektu szablonowego, jak: {{Code|SZABLON}},
* {{Code|kod}} - numer obiektu,
* {{Code|tekst}} - tekst całego artykułu,
* {{Code|numer_szablonu}} - tabela numerów dla różnych obiektów w jednej tabeli,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych obiektów tekstu,
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tabela danych parametrów rozkładanych szablonów i znaczników w zakodowanym tekście, dla poszczególnych elementów kodowych.
== {{Code|p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,...)}} ==
Funkcja służy dościągania zawartości stron z zawartością, a jeżeli zaawartości nie ma, to ona zwraca wartość {{Code|nil}}. Posiada własną walidacje nazwy stron,czy ona jest prawidłowa. Funkcja pseudoszablony nazw zastępuje odpowiednimi policzonymi lub podanymi nazwami. Rozwija instrukcje warunkowe wwedług ściśle określonych sposobów. Funkcja odpowiednio operuje na znacznikach wbudowanych {{Strong|MediaWiki}}, tzn. {{Tag|includeonly}} i {{Tag|noinclude}}, pozostawiając zawartość lub całość, usuwając je z tekstu, to też zależy od parametrów. Funkcja usuwa zawartość, wraz z nim, znacznika {{Tag|templatedata}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY)...end;
</syntaxhighlight>
Parametry funkcji podane w kolejności ich wsadzania do niej,one podaje się po kolei, a dalsze parametry nie podajemy, wtedy one są równe {{Code|nil}}:
* Zmienne obiektowe:
** {{Code|self}} {{Patrz|self}} - zmienna tworząca obiekty w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Tę funkcję np. można uruchomić poprzez, pisząc ogólnie: {{Code|p:PobierzSpecjalniePrzygotowanyPreWikikodStrony(nazwa_strony,nazwa_strony2,czy_noinclude,szablony_magiczne,dokumentacja,czy_szablon,nazwa_modulu_szablonu_opisu,szablon_nie_opis,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_KOMENTARZE,__FUNKCJA_KONTROLNE,__FUNKCJA_PARAMETRY);}}, gdzie {{Code|p}} - to odpowiednia zmienna.
* Zwykłe zmienne:
** {{Code|nazwa_strony}} - nazwa strony, której liczymy zawartość, używając funkcji: {{Code|mw.title.makeTitle}}, strona może nie istnieć,
** {{Code|nazwa_strony2}} - uchwyt zapamiętywania w bazie modułu: {{Code|{{m|Szablonowe}}}}, według ustalanej w funkcji: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe}}}}, w jego zmiennej {{Code|self}} parametrowej,
** {{Code|czy_noinclude}} - jeśli odpowiada wartości prawdziwej, wtedy znaczniki: {{Tag|noinclude}} i {{Tag|includeonly}}, zachowują się, jakby były nieinkludowane, w przeciwnym wypadku ta zmienna działa dla tych wbudowanych znaczników, jakby strona była nie taka,
* Zmienna tablicowa:
** {{Code|szablony_magiczne}} - tablica zmiennych i ich wartości, zawartych elementów na stronie, w której są zawarte pseudoszablony, które w tekście są traktowane jako pewne zmienne,które obliczamy za pomocą tej zmiennej funkcyjnej,
* Inne zmienne
** {{Code|dokumentacja}} {{Patrz|dokumentacja}} - określa, że tekst jest w trybie dokumentacji, wtedy on nie jest kodowany funkcjami: {{Code|{{m|Szablonowe}}}},
** {{Code|czy_szablon}} - gdy {{Code|nil}}, wtedy funkcja rozważa na: {{Tag|noinclude}} i {{Tag|includeonly}}, w przeciwnym wypadku to ona, która zamiast tego modyfikuje tekst w postaci wywołania: {{Code|tekst_artykulu{{=}}czy_szablon(tekst_artykulu,czy_noinclude)}}, czyli wtedy ona jest funkcją,
** {{Code|nazwa_modulu_szablonu_opisu}} - zmienne do obliczania tablicy {{Code|szablony_magiczne}}, która jest awaryjną nazwą strony, w przeciwnym wypadku dla tej tablicy jest używana zmienna: {{Code|nazwa_strony}}, z zamienionymi kodami {{Strong|HTML}} na znaki,
** {{Code|szablon_nie_opis}} - zmienna wskazująca, czy {{Code|nazwa strony}} wsskazuje na szablon, który nie jest opisem, wtedy tekst nie jest kodowwany,uzywany wraz ze zmienną: {{Code|dokumentacja}},
* Zmienne funkcyjne, które równie dobrze mogą przyjmować wartość {{Code|nil}}, wtedy jest przyjmowana wartość: {{Code|tekst_artykulu}}, jeżeli one mają wartość funkcyjną, te funkcje też mogą zwracać tą wartość, w takim przypadku brana jest ta wartość, którą pierwotnie chceliśmy przekształcać, w innym wypadku zwracana jest przetransformowana wartość operowana, zatem:
** {{Code|__FUNKCJA_ANALIZA_SPISOWA}} {{Patrz|__FUNKCJA_ANALIZA_SPISOWA}} - operacje inne niż w: {{Code|__FUNKCJA_KOMENTARZE}} i {{Code|__FUNKCJA_KONTROLNE}},
** {{Code|__FUNKCJA_KOMENTARZE}} {{Patrz|__FUNKCJA_KOMENTARZE}} - funkcja operującana komentarzy, przeciwnie jest używana funkcja: {{Code|techniczne_modul.UsuwanieKomentarzowe(tekst_artykulu)}}, gdzie: {{Code|techniczne_modul{{=}}require("Module:Techniczne");}},
** {{Code|__FUNKCJA_KONTROLNE}} {{Patrz|__FUNKCJA_KONTROLNE}} - funkcja usuwająca znaki kontrolne z tekstu takie jak: {{Code|<nowiki>%c</nowiki>}}, lub jemu podobne, np. znaki składające się z wielu bajtów,
** {{Code|__FUNKCJA_PARAMETRY}} {{Patrz|__FUNKCJA_PARAMETRY}} - funkcja do rozważania parametry w samej funkcji kodowaniana poziomie tablicy bazy kodów: {{Code|tablica_obiektow_strony_dany_modul}}, wewnątrz funkcji kodującej w module: {{Code|{{m|Szablonowe/Potrzebne}}}}, czyli w: {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,...)|p=Szablonowe/Potrzebne}}}} {{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
Przykłady wywołań w innych funkcjach:
<syntaxhighlight lang="lua">
local tekst=p.PobierzSpecjalniePrzygotowanyPreWikikodStrony(self,nazwa_modulu_opisu,nazwa_modulu,false,nil,dokumentacja,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,nil,nil,__FUNKCJA_PARAMETRY);
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_ANALIZA_SPISOWA}} operuje kodem na podstawie podanych parametrów, jego przykładowy ogólny kod:
<syntaxhighlight lang="lua">
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
....
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_artykulu}} - tekst do analizy, jak w funkcji nadrzędnej,
* {{Code|nazwa_modulu_szablonu_opisu}} - nazwa strony potrzebna do ustalania wartości nazw do tworzenia dalszego zmiennej {{Code|szablony_magiczne}}, w przeciwnym wypadku brana jest wartość: {{Code|nazwa_strony_bez_kodow_html}},
* {{Code|nazwa_strony_bez_kodow_html}} - jest to nazwa strony {{Code|nazwa_strony}}, tylko z kodami {{Strong|HTML}} zamienionymi na ich odpowiedniki znakowe,
* {{Code|szablony_magiczne}} - tabela pseudoszablonów z ich wartościami ustalonymi, jak powyżej,
* {{Code|tabela_nazw}} - tabela nazw obsługiwane przez funkcje nazw według: {{Code|{{ld2|Nazwy}}}}, używana też do ustalania zmiennej {{Code|szablony_magiczne}} wewnątrz tej funkcji nadrzędnej.
{{Hr}}
Funkcja {{Code|__FUNKCJA_KOMENTARZE}} ma przykładowy kod, który zamienia komentarze na pewne kody liczone funkcją: {{Code|szablonowe_modul.NormaKoduKodowaniaTekstu}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_KOMENTARZE=function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_KONTROLNE}}, która usuwa znaki kontrolne, definicja:
<syntaxhighlight lang="lua">
local __FUNKCJA_KONTROLNE=function(tekst_artykulu)
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(%c)","");
return tekst_artykulu;
end;
</syntaxhighlight>
{{Hr}}
Funkcja {{Code|__FUNKCJA_PARAMETRY}} ma mniej więcej kod, który służy do modyfikacji elementów tablicy {{Code|tablica}}:
<syntaxhighlight lang="lua">
local __FUNKCJA_PARAMETRY=function(obiekt)
return function(tablica,klucz,wartosc_tablicy,czy_wartosc_tablicy_nil--[[ten element przyjmuje wtedy wartość: true, w przeciwnym wypadku false]])
... --- ciało funkcji operującej na tablicy: tablica;
end;
end;
</syntaxhighlight>
Tablica {{Code|tablica_obiektow_strony_dany_modul[obiekt]}} jest tablicą zawsze pustą, do niej dla każdego obiektu {{Code|obiekt}} przywiązana jest tablica, którą zapełaniamy elementami, modyfikującego tablicę {{Code|tablica}} w funkcji zwracanej przez {{Code|__FUNKCJA_PARAMETRY}}. Jak piszemy {{Code|tablica_obiektow_strony_dany_modul[obiekt][kod]}}, wtedy modyfikujemy tą drugą tablicę lub uzyskujemy dane z niej, oto przykład:
<syntaxhighlight lang="lua">
tablica_obiektow_strony_dany_modul["SZABLON"][1]="{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
local szablon=tablica_obiektow_strony_dany_modul["SZABLON"][1];
---- Wartość zmiennej: szablon, jest: "{{Zawartość|parametr1=wartość1|parametr2=wartość2}}";
</syntaxhighlight>
A dokładnie, podczas tych podstawień w tablicę i jej zmiany, wykonywany był kod:
<syntaxhighlight lang="lua">
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local wartosc_tablicy=fun_tablica()[klucz];
if(wartosc_tablicy~=nil)then
wartosc_tablicy[1]=wartosc;
wartosc_tablicy[2]=false;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end;
else
local tab={wartosc,true,};
fun_tablica()[klucz]=tab;
if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end;
end;
else
fun_tablica()[klucz]=nil;
end;
end;
</syntaxhighlight>
A {{Code|__metatablica}} to metatabelka, a {{Code|__FUNKCJA}} jest to funkcja zwracana przez {{Code|__FUNKCJA_PARAMETRY}}.
=== Kolejność wywoływania elementów funkcji ===
Kolejność wywołań:
* Sprawdzana jest, czy strona składa się z samych znaków odstępów lub dolnych myślników,
* Wywoływana jest funkcja: {{Code|{{sr|#p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](frame)|p=Html}}}}, która z: {{Code|nazwa_strony}}, liczy: {{Code|nazwa_strony_bez_kodow_html}},
* Sprawdzana jest poprawność nazwy według: {{Code|{{sr|#p.CzyNiepoprawnaNazwa(nazwa_jednostki)|p=Pudełko/Tom I}}}}, ze zmiennej: {{Code|nazwa_strony_bez_kodow_html}}, a jeżeli ona zawiera błędy, wtedy są zapisywane błędy w tabeli błędów i zwracana jest wartość {{Code|nil}}, te błędy mogą być wykorzystane przez moduł: {{Code|{{ld2|StronicowyParser/Kategorie}}}},
* Aby uzyskać parametry strony uruchamiamy: {{Code|{{sr|#p.CzyStronaIstniejeJejParametry()|p=Techniczne}}}}, i z niej uzyskujemy wartości w postaci osobnych zwracanych zmiennych: {{Code|uchwyt strony}}, {{Code|tekst_artykulu}} i {{Code|czy_istnieje}}, jeżeli uchwyt jest nieprawidłowy, zawartość nie istnieje lub strona nie istnieje, wtedy błędy są zapisywane w tabeli błędów,
* Gdy {{Code|czy_szablon}} {{=}} {{Code|nil}}:
** Jeśli {{Code|czy_noinclude}} przyjmuje wartość {{Code|true}}, wtedy zawartość strony nie jest inkludowana, w przeciwnym wypadku jest przeciwnie, ze strony są usuwane pozostałości ze znaczników wbudowanych w {{Strong|MediaWiki}} i znaczniki wbudowane jak {{Tag|templatedata}},
** Przeciwna wypadek: wtedy {{Code|czy_szablon}} jest funkcją, wtedy wywoływana jest wtedy ona,
** W przeciwnie: żadne operacje w tym przypadku nie są robione,
* Usuwane są komentarze funkcją: {{Code|__FUNKCJA_KOMENTARZE}}, a jeżeli ona nie istnieje, wtedy uruchamiana jest: {{Code|{{sr|#p.UsuwanieKomentarzowe()|p=Techniczne}}}},
* Ustawiane są zmienne w: {{Code|szablony_magiczne}}, jeżeli nie jest ta wartość równa wartości odpowiadającej fałszywej, na podstawie tabeli: {{Code|tabela_nazw}},
** Usuwane są pseudoszablony, dalej jest uruchamiana funkcja: {{Code|{{sr|#p.InstrukcjeWarunkowe()|p=Ramka}}}} {{Patrz|InstrukcjeWarunkowe-PobierzSpecjalniePrzygotowanyPreWikikodStrony}}, by usunąc różne instrukcje warunkowe,
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_ANALIZA_SPISOWA}},
* Uruchamiana, jeśli istnieje, funkcja: {{Code|__FUNKCJA_KONTROLNE}},
* Jeśli: {{Code|szablon_nie_opis}} {{=}} {{Code|false}} i {{Code|dokumentacja}} {{=}} {{Code|false}}, wtedy jest uruchamiana funkcja: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z parametrem funkcyjnym, jeśli jest, o nazwie: {{Code|__FUNKCJA_PARAMETRY}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5gkfetbdh67o5zzrbwf8bsohxu59f8h