Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.18
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
MediaWiki:Scribunto-doc-page-show
8
33746
553842
553737
2026-09-01T14:21:31Z
Persino
2851
553842
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{Dokumentacja|$1}}
{{#switch:<!--
-->{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
}}
| Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| #default = {{Kategoria|Moduły z opisami}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}}
}}
sqlqdxcl0j5znh566546i3w5acavt0i
553843
553842
2026-09-01T14:23:15Z
Persino
2851
553843
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{Dokumentacja|$1}}
{{#switch:<!--
-->{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
}}
| Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}
; Inne przykłady znajdują się w katalogu{{dk}}
* {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| #default = {{Kategoria|Moduły z opisami}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}}
}}
3x0eczxwrlrypdxdejzq3oodf20np6i
553844
553843
2026-09-01T14:23:58Z
Persino
2851
553844
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{Dokumentacja|$1}}
{{#switch:<!--
-->{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
}}
| Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| #default = {{Kategoria|Moduły z opisami}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}}
}}
sqlqdxcl0j5znh566546i3w5acavt0i
553846
553844
2026-09-01T14:37:48Z
Persino
2851
553846
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{Dokumentacja|$1}}
{{#switch:<!--
-->{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
}}
| Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| #default = {{Kategoria|Moduły z opisami}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}}
}}
fvicusyxvx1nr2rmn7c721ccmgzboz0
553848
553846
2026-09-01T14:41:35Z
Persino
2851
553848
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{Dokumentacja|$1}}
{{#switch:<!--
-->{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
}}
| Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}.
|
}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| #default = {{Kategoria|Moduły z opisami}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}}
}}
nlj0w7d72cjrfl8sesja4kfrnmfqt8v
553850
553848
2026-09-01T15:14:29Z
Persino
2851
553850
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{Dokumentacja|$1}}
{{#switch:<!--
-->{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
}}
| Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpg|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpg|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
|
}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| #default = {{Kategoria|Moduły z opisami}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}}
}}
dvtsj4nvy7qns5klefk4z70669v72jv
553852
553850
2026-09-01T15:17:21Z
Persino
2851
553852
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{Dokumentacja|$1}}
{{#switch:<!--
-->{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
}}
| Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
|
}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| #default = {{Kategoria|Moduły z opisami}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}}
}}
ohm0gn09cdjf5xyups6acq88yxrjt6r
553853
553852
2026-09-01T15:19:44Z
Persino
2851
553853
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{Dokumentacja|$1}}
{{#switch:<!--
-->{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
}}
| Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| #default = {{Kategoria|Moduły z opisami}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}}
}}
atgk4etcmytms1v8mixxrhu0mibqwq0
MediaWiki:Scribunto-doc-page-does-not-exist
8
33747
553847
553738
2026-09-01T14:38:34Z
Persino
2851
553847
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{#if:{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}
|{{Ombox|typ=wiadomość|grafika={{Ikona|stop}}|tekst=To jest moduł przekierowujący, który wskazuje na {{lo|{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}}}.}}
}}<!--
-->{{#switch:{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Mapa/dane)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(ISBN)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{PAGENAME}}
}}
| Mapa/dane = {{Dokumentacja
| zawartość = {{Ombox|tekst = Ten moduł jest szablonem z danymi do '''{{lpw2|Szablony lokalizacyjne}}'''.{{Br}}Opis pochodzi z {{m|Mapa/doc}}.}}<!--
--><templatestyles src="Moduł:Infobox/styles.css" />{{#invoke:Mapa/doc|opis}}
}}{{Kategoria|Szablony lokalizacyjne - podmoduły modułu Mapa}}
| ISBN = {{#if:{{Dopasuj|ciąg={{SUBPAGENAME}}|wzór=^{{!(}}0-9{{)!}}+X?$}}
|{{Dokumentacja |zawartość = {{Ombox|tekst = Ten moduł jest szablonem deklarującym formalnie błędny numer [{{lpg|International Standard Book Number|ISBN}}.}}{{#invoke:ISBN|opis}}}}{{Kategoria|Błędny numer ISBN}}
|{{Dokumentacja}}{{Kategoria|ISBN}}
}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| Brudnopis = ''Dokumentacja dla tego modułu może zostać utworzona pod nazwą [[:$1]]''.{{Kategoria|Moduły, bez opisów, brudnopisu}}
| #default = {{Dokumentacja}}{{Kategoria|Moduły bez opisów}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów bez opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-header}}.}}
}}
h76gxns0b7d6xdbpb2df44idcrnqv0f
553849
553847
2026-09-01T14:43:26Z
Persino
2851
553849
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{#if:{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}
|{{Ombox|typ=wiadomość|grafika={{Ikona|stop}}|tekst=To jest moduł przekierowujący, który wskazuje na {{lo|{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}}}.}}
}}<!--
-->{{#switch:{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Mapa/dane)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(ISBN)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{PAGENAME}}
}}
| Mapa/dane = {{Dokumentacja
| zawartość = {{Ombox|tekst = Ten moduł jest szablonem z danymi do '''{{lpw2|Szablony lokalizacyjne}}'''.{{Br}}Opis pochodzi z {{m|Mapa/doc}}.}}<!--
--><templatestyles src="Moduł:Infobox/styles.css" />{{#invoke:Mapa/doc|opis}}
}}{{Kategoria|Szablony lokalizacyjne - podmoduły modułu Mapa}}
| ISBN = {{#if:{{Dopasuj|ciąg={{SUBPAGENAME}}|wzór=^{{!(}}0-9{{)!}}+X?$}}
|{{Dokumentacja |zawartość = {{Ombox|tekst = Ten moduł jest szablonem deklarującym formalnie błędny numer [{{lpg|International Standard Book Number|ISBN}}.}}{{#invoke:ISBN|opis}}}}{{Kategoria|Błędny numer ISBN}}
|{{Dokumentacja}}{{Kategoria|ISBN}}
}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}.
|
}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| Brudnopis = ''Dokumentacja dla tego modułu może zostać utworzona pod nazwą [[:$1]]''.{{Kategoria|Moduły, bez opisów, brudnopisu}}
| #default = {{Dokumentacja}}{{Kategoria|Moduły bez opisów}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów bez opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-header}}.}}
}}
i2gl2d8wmipiy5qeuqqz0ug69o1undw
553851
553849
2026-09-01T15:15:25Z
Persino
2851
553851
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{#if:{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}
|{{Ombox|typ=wiadomość|grafika={{Ikona|stop}}|tekst=To jest moduł przekierowujący, który wskazuje na {{lo|{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}}}.}}
}}<!--
-->{{#switch:{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Mapa/dane)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(ISBN)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{PAGENAME}}
}}
| Mapa/dane = {{Dokumentacja
| zawartość = {{Ombox|tekst = Ten moduł jest szablonem z danymi do '''{{lpw2|Szablony lokalizacyjne}}'''.{{Br}}Opis pochodzi z {{m|Mapa/doc}}.}}<!--
--><templatestyles src="Moduł:Infobox/styles.css" />{{#invoke:Mapa/doc|opis}}
}}{{Kategoria|Szablony lokalizacyjne - podmoduły modułu Mapa}}
| ISBN = {{#if:{{Dopasuj|ciąg={{SUBPAGENAME}}|wzór=^{{!(}}0-9{{)!}}+X?$}}
|{{Dokumentacja |zawartość = {{Ombox|tekst = Ten moduł jest szablonem deklarującym formalnie błędny numer [{{lpg|International Standard Book Number|ISBN}}.}}{{#invoke:ISBN|opis}}}}{{Kategoria|Błędny numer ISBN}}
|{{Dokumentacja}}{{Kategoria|ISBN}}
}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
|
}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| Brudnopis = ''Dokumentacja dla tego modułu może zostać utworzona pod nazwą [[:$1]]''.{{Kategoria|Moduły, bez opisów, brudnopisu}}
| #default = {{Dokumentacja}}{{Kategoria|Moduły bez opisów}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów bez opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-header}}.}}
}}
3yiyobry846lb6qml4zikli644hvv82
553854
553851
2026-09-01T15:20:22Z
Persino
2851
553854
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{#if:{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}
|{{Ombox|typ=wiadomość|grafika={{Ikona|stop}}|tekst=To jest moduł przekierowujący, który wskazuje na {{lo|{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}}}.}}
}}<!--
-->{{#switch:{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Mapa/dane)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(ISBN)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{PAGENAME}}
}}
| Mapa/dane = {{Dokumentacja
| zawartość = {{Ombox|tekst = Ten moduł jest szablonem z danymi do '''{{lpw2|Szablony lokalizacyjne}}'''.{{Br}}Opis pochodzi z {{m|Mapa/doc}}.}}<!--
--><templatestyles src="Moduł:Infobox/styles.css" />{{#invoke:Mapa/doc|opis}}
}}{{Kategoria|Szablony lokalizacyjne - podmoduły modułu Mapa}}
| ISBN = {{#if:{{Dopasuj|ciąg={{SUBPAGENAME}}|wzór=^{{!(}}0-9{{)!}}+X?$}}
|{{Dokumentacja |zawartość = {{Ombox|tekst = Ten moduł jest szablonem deklarującym formalnie błędny numer [{{lpg|International Standard Book Number|ISBN}}.}}{{#invoke:ISBN|opis}}}}{{Kategoria|Błędny numer ISBN}}
|{{Dokumentacja}}{{Kategoria|ISBN}}
}}
| Wikibooks/Przykład = {{Dokumentacja|zawartość=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| Brudnopis = ''Dokumentacja dla tego modułu może zostać utworzona pod nazwą [[:$1]]''.{{Kategoria|Moduły, bez opisów, brudnopisu}}
| #default = {{Dokumentacja}}{{Kategoria|Moduły bez opisów}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów bez opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-header}}.}}
}}
4bznmy78r17mmqr501ubpo39wzcvc2d
Moduł:StronicowyParser/Potrzebne
828
58155
553835
553832
2026-09-01T12:19:26Z
Persino
2851
553835
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,tekst=true,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|tytuł=<div class="tytuł_spisu_treści" style="text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;">'..spis_tresci..'</div>|spis='..twor_listy..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not tekst)then return tekst;end;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local tekst,tekst2=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
return tekst,tekst2;
end;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory)
----
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
return wynik;
end;
return true;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych)
----
local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local dodatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
local strona_wolumin;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(strona)then
strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil);
end;
podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
----
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true,strona_wolumin);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false,(((strona)and(not nazwa)) and true or nil);
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki,nil,strona_wolumin);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow),(((strona)and(not nazwa)) and true or nil);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
szlh7e602lvhdnq0ke760rdd80yitel
Szablon:ProgId/opis
10
60580
553836
553810
2026-09-01T12:56:00Z
Persino
2851
/* Zobacz też */
553836
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Szablony do kolorowania składni programów użytych w tekście artykułu, by zachować użyty inny wikikod w kodzie, np. linki do projektu {{NS|kp=w|l=tak}}.
== Opis parametrów ==
Szablon przyjmuje jeden parametr, którym jest: {{Code|{{#switch:{{ROOTPAGENAME}}|ProgId=identyfikator zmiennych|ProgLic=tekst licencji|ProgTyp=typ danych|ProgKlu=słowo kluczowe|ProgPre=tekst kodu preprocesora|ProgKom=komentarz kodu|ProgStr=łańcuch danych|ProgIng=liczba całkowita|ProgReal=liczba rzeczywista|Samp=wygenerowany tekst przez programy komputerowe|#default=}}}}.
== Przykład i opis ==
{{Pre|{{#switch:{{ROOTPAGENAME}}
| ProgId =
{{s|ProgId}} - identyfikatory zmiennych
Proponowany kolor: <font color=darkblue>darkblue</font>
{{ProgId}}
Przykład: {{ProgId|abc}} {{=}} {{ProgInt|5}}
| ProgLic =
{{s|ProgLic}} - licencja kodu
Proponowany kolor: <font color=grey>grey</font>
{{ProgLic}}
Przykład: {{ProgLic|Oto jest licencja}}
| ProgTyp =
{{s|ProgTyp}} - typ danych
Proponowany kolor: <font color=midnightblue>midnightblue</font>
{{ProgTyp}}
Przykład: {{ProgTyp|int}}
| ProgKlu =
{{s|ProgKlu}} - słowo kluczowe
Proponowany kolor: '''pogrubienie'''
{{ProgKlu}}
Przykład: {{ProgKlu|class}} ABC
| ProgPre =
{{s|ProgPre}} - preprocesor
Proponowany kolor: <font color=dodgerblue>dodgerblue</font>
{{ProgPre}}
Przykład: {{ProgPre|#include}}
| ProgKom =
{{s|ProgKom}} - komentarz
Proponowany kolor: <font color=slategray>slategray</font>
{{ProgKom}}
Przykład: {{ProgKom|//Komentarz}}
| ProgStr =
{{s|ProgStr}} - łańcuch znaków
Proponowany kolor: <font color=firebrick>firebrick</font>
{{ProgStr}}
Przykład: {{ProgKlu|printf}}({{ProgStr|"łańcuch znaków"}});
| ProgInt =
{{s|ProgInt}} - liczba całkowita
Proponowany kolor: <font color=deepskyblue>deepskyblue</font>
{{ProgInt}}
Przykład: mSceneMgr->setAmbientLight( ColourValue( {{ProgInt|0, 0, 0 }}) );
| ProgReal =
{{s|ProgReal}} - liczba rzeczywista
Proponowany kolor: <font color=steelblue>steelblue</font>
{{ProgReal}}
Przykład: {{ProgKlu|printf}}({{ProgStr|"liczba rzeczywista: %f"}}, {{ProgReal|12.33}});
| Samp =
{{s|Samp}} - koloruje tekst wygenerowany przez programy komputerowe
Proponowany kolor: <font color=#009000>#009000</font>
{{Samp}}
Przykład: {{Samp|Tekst wygenerowany przez program komputerowy}};
| #default =
}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"1": {
"description": "Element kodu do kolorowania.",
"type": "string",
"required": true
}
},
"description": "Szablon do kolorowania elementów kodów w tekście przy zachowania wikikodu."
}
</templatedata>
== Zobacz też ==
; Szablony kolorowania składni języków programowania przy zachowaniu elementów wikikodu, jak linki{{dk}}
Z lewej strony jest podany: {{Np|Template|link=tak}}, a po prawej jest napisane do czego on służy.
* {{s|ProgId}} - identyfikatory zmiennych,
* {{s|ProgLic}} - tekst licencji,
* {{s|ProgTyp}} - typ danych,
* {{s|ProgKlu}} - słowa kluczowych,
* {{s|ProgPre}} - składnia preprocesora,
* {{s|ProgKom}} - komentarze,
* {{s|ProgStr}} - łańcuch znaków,
* {{s|ProgInt}} - typ całkowity,
* {{s|ProgReal}} - typ rzeczywisty.
; Szablony do kolorowania tekstów wygenerowanych przez programy{{dk}}
* {{s|Samp}} - szablon kolorujący jednolicie składnię kodu.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony do kolorowania składni kodów komputerowych}}
</includeonly>
dw6nymgzx6515uukibv5831xvudismp
Wikibooks:Mechanizm MediaWiki
4
60755
553940
553281
2026-09-02T08:47:46Z
Persino
2851
/* Moduły {{lpg|Lua}} w {{lpr|Lua|Scribunto}} */
553940
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Wstęp}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
Przedstawimy tutaj problemy z mechanizmem MediaWiki, poczynając od opisu szablonów i modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w zastosowaniach również do wikikodu, na polskim {{NS|pk=mj|w=tak|l=tak}}.
== Szablony ==
Przedstawiamy tutaj w dwóch formach opis wszystkich szablonów, dostępnych na polskim {{NS|pk=mj|l=tak}}, w postaci listy.
=== Opis wizualny ===
* {{lr|Szablony}} - strona główna zbioru wszystkich szablonów, opisu ich, wizualnego i opisowego.
** {{lru|Szablony/Ogólne}}, {{lru|Szablony/Informacje}}, {{lru|Szablony/PrzypisStrona}}, {{lru|Szablony/Podręcznikowe}}, {{lru|Szablony/Książkowe}}, {{lru|Szablony/Tekst}}, {{lru|Szablony/Zawartość}}, {{lru|Szablony/Nagłówki}}, {{lru|Szablony/Przekierowania}}, {{lru|Szablony/Języki}}, {{lru|Szablony/Liczby}}, {{lru|Szablony/Kategorie}}, {{lru|Szablony/Opisy}}, {{lru|Szablony/Znaczniki}}, {{lru|Szablony/Szablony opływania}}, {{lru|Szablony/Stronicowe}}, {{lru|Szablony/Kontenerowe}}, {{lru|Szablony/Elastyczne}}, {{lr|Szablony/Infoboksy/Prolog|Infoboksy - Prolog}}, {{lr|Szablony/Infoboksy/Tom I|Infoboksy - Tom I}}, {{lr|Szablony/Infoboksy/Tom II|Infoboksy - Tom II}}, {{lr|Szablony/Infoboksy/Tom III|Infoboksy - Tom III}}, {{lr|Szablony/Infoboksy/Tom IV|Infoboksy - Tom IV}}, {{lr|Szablony/Infoboksy/Tom V|Infoboksy - Tom V}}, {{lr|Szablony/Infoboksy/Tom VI|Infoboksy - Tom VI}}, {{lr|Szablony/Infoboksy/Komponenty|Infoboksy - Komponenty}}, {{lr|Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe)}}, {{lru|Szablony/Porządkowe}}, {{lru|Szablony/Źródła artykułów}}, {{lru|Szablony/Linki}}, {{lru|Szablony/Linki inteligentne}}, {{lru|Szablony/Do usunięcia}}, {{lru|Szablony/Nawigacja}}, {{lru|Szablony/Media}}, {{lru|Szablony/Grafika}}, {{lru|Szablony/Licencjonowanie}}, {{lru|Szablony/Techniczne}}, {{lru|Szablony/Wikipedysta}}, {{lru|Szablony/Dyskusja Wikipedysty}}, {{lru|Szablony/MediaWiki}} i {{lru|Szablony/Systemowe}}.
=== Opis tekstowy ===
* {{lp|Spis treści}} - spis treści pomocy, nie tylko szablonów, czy modułów.
** {{lp|Spis treści/Szablony/Tom I|Szablony - Tom I}}, {{lp|Spis treści/Szablony/Tom II|Szablony - Tom II}}, {{lp|Spis treści/Szablony/Tom III|Szablony - Tom III}} i {{lp|Spis treści/Szablony/Tom IV|Szablony - Tom IV}}.
== Moduły {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
{{Osobny artykuł|{{Ns:Project}}:Moduły|obserwowane=Moduły}}
* Moduły podstawowe
** {{m|Parametry}} ({{lru|Moduły/Parametry}}), {{m|Html}} ({{lru|Moduły/Html}}), {{m|Nazwy}} ({{lru|Moduły/Nazwy}}), {{m|Książkowe}} ({{lru|Moduły/Książkowe}}), {{m|Pudełko}} ({{lru|Moduły/Pudełko}}), {{m|Ramka}} ({{lru|Moduły/Ramka}}), {{m|Specjalne}} ({{lru|Moduły/Specjalne}}), {{m|StronicowyParser}} ({{lru|Moduły/StronicowyParser}}), {{m|Szeregi}} ({{lru|Moduły/Szeregi}}), {{m|Szablonowe}} ({{lru|Moduły/Szablonowe}}), {{m|Techniczne}} ({{lru|Moduły/Techniczne}}), {{m|Wiki}} ({{lru|Moduły/Wiki}}).
* Moduły standardowe
** {{m|Kategorie}} ({{lru|Moduły/Kategorie}}), {{m|Linki}} ({{lru|Moduły/Linki}}), {{m|Łatki}} ({{lru|Moduły/Łatki}}), {{m|Skrót}} ({{lru|Moduły/Skrót}}), {{m|Sprawdź}} ({{lru|Moduły/Sprawdź}}), {{m|ŹródłoLua}} ({{lru|Moduły/ŹródłoLua}}).
* Specjalistyczne
** {{m|Tabela}} ({{lru|Moduły/Tabela}}), {{m|Sekcja referencyjna}} ({{lru|Moduły/Sekcja referencyjna}}), {{m|Licencja}} ({{lru|Moduły/Licencja}}), {{m|Przypisy}} ({{lru|Moduły/Przypisy}}), {{m|Dopracować}} ({{lru|Moduły/Dopracować}}).
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategoria|Pomoc - Problemy wywołań mechanizmu MediaWiki|sortuj spacją=tak}}<!--
--></noinclude>
6wt82opi1as9unk3orbinoshzjmw0qf
Wikibooks:Moduły
4
60758
553941
553295
2026-09-02T08:51:28Z
Persino
2851
/* Spis treści */
553941
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
c7evb7urgw9s2nekcab7i4jjio1xw1d
Wikibooks:Moduły/Ramka
4
63231
553837
553788
2026-09-01T13:34:36Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
553837
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
; Parametry funkcji{{dk}}
* {{Code|frame}} {{Patrz|frame}} - funkcja ramkki funkcji tablica transportu modułu,
* {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} - ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
; Parametry ramki funkcji tablicy transportu modułu{{dk}}
* Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:
** {{Code|Nazwa}} {{Patrz|Nazwa}} - jest to pełna nazwa szablonu, modułu, czy parsera,
** {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} - tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są,
** {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} - jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków,
** {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} - szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki,
** {{Code|potomek}} {{Patrz|potomek}} - zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną podaje się w parametrze {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję, tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy automatycznie ten niepusty parametr, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości prametrów w budowanych w tą funkcję,
** {{Code|nie potomek}} {{Patrz|nie potomek}} - zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą). Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica).
** {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} - zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.
** {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} - nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka,
** {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} - zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję,
** {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} - jeśli wartość jego jest niepusta, wtedy parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}},
** {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} - zmienna mówiąca, czy mają być tworzone parametry ramki, które nie są sprawdzane przez walidację błędów w {{m|Sprawdź|Parametry}}, wtedy te parametry rodzica nie mogą być podane, przy pomocy tej zmiennej zmienne z: {{Code|bez argumentów szablonu}} są łączone z parametrami ramki,
** {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} - parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, niepusty parametr {{Code|potomek}} {{LinkPatrz|potomek}}, tworzona jest niepusta lista parametrów {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, powtarzana jest zmienna {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}, i tworzona jest dodatkowa parametr z {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jeśli nie podano niepustego parametru {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}},
** {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} - czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem,
** {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} - czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka, nie tak, jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami,
** {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} - parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
* {{Code|Funkcja}} {{Patrz|Funkcja}} - nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}.
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - jak w: {{LinkPatrz|frame}},
* {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} - pewna tablica transportu funkcji.
* Zmienne do mikroszablonów:
** {{Code|minimum}} {{Patrz|minimum}} - liczba mówiąca o minimum,
** {{Code|maksimum}} {{Patrz|maksimum}} - liczba mówiąca o maksimum.
Parametry ramki funkcji tablicy transportu modułu:
* {{Code|akapit}} {{Patrz|akapit}} - jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity,
* {{Code|przecinek}} {{Patrz|przecinek}} - jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja,
* {{Code|nowa linia}} {{Patrz|nowa linia}} - w przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}},
* {{Code|wyliczanka}} {{Patrz|wyliczanka}} - wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}},
* {{Code|początek}} {{Patrz|początek}} - mówi, że na początku musi znajdować się przecinek,
* {{Code|myślnik}} {{Patrz|myślnik}} - mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}},
* {{Code|warunkowe}} {{Patrz|warunkowe}} - instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}},
** {{Code|parametr}} {{Patrz|parametr}} - używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
** Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku.
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
* {{Code|<nowiki>{{min}}</nowiki>}} - minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}},
* {{Code|<nowiki>{{max}}</nowiki>}} - a tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
* {{Code|ciag}} {{Patrz|ciag}} - podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek,
* {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} - używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej,
* {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} - czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} {{Patrz|args}} - tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} - tablica {{lpg|JSON}}.
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parameetry funkcji:
* {{Code|frame}} - jak w: {{LinkPatrz|frame}}.
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - jak w: {{LinkPatrz|frame}}.
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - jak w: {{LinkPatrz|frame}}.
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - jak w: {{LinkPatrz|frame}}.
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - jak w: {{LinkPatrz|frame}}.
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - jak w: {{LinkPatrz|frame}}.
Szablon {{s|Q}} przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon {{s|T}} podobnie jak poprzedni szablon, tylko dodatkowo dopuszcza parametry szablonu, którego uruchamia z nimi szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, zostawia w wpis w postaci przedrostka {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - jak w: {{LinkPatrz|frame}}.
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - jak w: {{LinkPatrz|frame}}.
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}tak}}}} → {{Code|{{A|{{N|Unicode-c}}|p=tak}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - jak w: {{LinkPatrz|frame}}.
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
* {{Code|start}} {{Patrz|start}} - liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}},
* {{Code|koniec}} {{Patrz|koniec}} - liczba, która wskazuje koniec liczenia.
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|datkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''. W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych średnikami.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku,gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}},którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} - liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
* {{Code|start}} - początek iteracji dokonywany przez ta funkcję,
* {{Code|koniec}} - koniec iteracji dokonywany przez ta funkcję,
* {{Code|krok}} - krok iteracji, co który numer ma iterować,
* {{Code|łącznik}} - szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty,
* {{Code|nowa linia}} - szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany,
* {{Code|przeskok}} - dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg,
** Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku,
* {{Code|nie rozwiń}} - niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}},
* {{Code|1}} - aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
* {{Code|<nowiki>{{start}}</nowiki>}} - przyjmuje wartość {{Tt|1}},
* {{Code|<nowiki>{{koniec}}</nowiki>}} - przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}},
* {{Code|<nowiki>{{krok}}</nowiki>}} - przyjmuje wartość {{Tt|1}}.
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
* {{Code|<nowiki>{{_}}</nowiki>}} - symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
* {{Code|ciąg}} - lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami,
* {{Code|łącznik}} - szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty,
* {{Code|nowa linia}} - szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany,
* {{Code|przeskok}} - dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg,
** Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku,
* {{Code|nie rozwiń}} - niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}},
* {{Code|1}} - aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
* {{Code|<nowiki>{{start}}</nowiki>}} - przyjmuje wartość {{Tt|1}},
* {{Code|<nowiki>{{koniec}}</nowiki>}} - przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}},
* {{Code|<nowiki>{{krok}}</nowiki>}} - przyjmuje wartość {{Tt|1}}.
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
* {{Code|<nowiki>{{_}}</nowiki>}} - symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji,
* {{Code|<nowiki>{{ciąg}}</nowiki>}} - jest to wartość pojedynczego elementu w {{Code|ciąg}}.
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, którymusi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
* {{Code|start}} - od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym),
* {{Code|wzór}} - wzór według tego, co ma sprawdzając, czy one pasują do niego.
: Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
; Parametry fubkcji{{dk}}
* {{Code|1}} - wielopoziomowy adres z ewentualnie prawymi ukośnikami.
: Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}.
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
; Parametry funkcji{{dk}}
* {{Code|start}} - od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym),
* {{Code|wzór}} - wzór według tego, co ma sprawdzając, czy one pasują do niego.
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
; Parametry funkcji{{dk}}
* {{Code|zmienna}} - podstawa parametru numerowanego liczbami lub ciągiem pustym,
* {{Code|numerowane}} - czy ma wliczać parametry numerowane do tego numeru.
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z tą funkcją ====
* Popatrz na definicję przykładu - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
; Parametry funkcji{{dk}}
* {{Code|zmienna}} - podstawa nazwowa parametru numerowanego,
* {{Code|numerowane}} - czy ma wliczać parametry numerowane do tej liczby.
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z tą funkcją ====
* Popatrz na definicję przykładu - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
; Parametry funkcji{{dk}}
* {{Code|parametry}} - lista parametrów oddzielonych średnikiem,
* {{Code|pozycja}} - szukana lista w tablicy parametrów,
* {{Code|od dużej}} - czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
Funkcja, jeżeli wyszukała w tej tablic parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5r2wfrh356rhkcogktigkygytarx7t2
Wikibooks:Moduły/Html
4
63462
553845
553786
2026-09-01T14:25:31Z
Persino
2851
/* Przykład kodu na stronie modułów z przykładami na stronie ich opisów */
553845
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|html}} - ciąg do przetworzenia, w częściach bez parametrów omijanych,
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|html}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu,
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
* {{Code|normalnie}} - czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|tekst}} - zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|tekst}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|1}} - zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}},
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|1}} - ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8,
* {{Code|2}} - czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry, a jeżeli nie, to w {{Code|frame}}, a jeśli frame nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
* {{Code|id}} - ciąg do przeinaczenia,
* {{Code|bez_transformacji}} - gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr z ciągiem znakowym do operacji.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy zakodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - tekst, który chcemy odkodować,
* {{Code|czy_nie_odstepy}} - czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do sprawdzenia - wymagany,
* {{Code|encode}} - gdy jest sprawdzana tylko obecność znaku {{Code|%}},
* {{Code|encode_real}} - gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do transformacji kodowania,
* {{Code|encode}} i {{Code|encode_real}} - te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - parametr do odkodowania,
* {{Code|spacje}} - gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}},
* {{Code|encode}} i {{Code|encode_real}} - te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
* {{Code|czy_nie_odstepy}} - gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|znacznik}} - atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|value}} - parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu,
* {{Code|czy_nie_dolne_myslniki}} - gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|1}} lub {{Code|parametry}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|parametry}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu,
* {{Code|czy_naprawiaj}} - parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej,
* {{Code|tabela_nazw_adresu}} - tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} - nazwa jednostki (strony), tzn. jego adres,
* {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} - znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|1}} lub {{Code|url}} - adres strony,
* {{Code|2}} lub {{Code|ukośnik}} - czy do nazwy strony ma wliczać ukośnik.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|1}} lub {{Code|url}} - adres strony, ewentualnie z opcjonalnym protokołem.
Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|1}} lub {{Code|url}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - zawartość, na którą działamy,
* {{Code|wzor}} - części do podziałania tą funkcją,
* {{Code|funkcja}} - funkcja, którą działamy na te części.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do potrzelenia na trzy części.
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} - nromalny adres strony, bez parametrów i nagłówka,
* {{Code|parametry}} - parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
* {{Code|nagłówek}} - nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres do przetworzenia,
* {{Code|funkcja_strona}} - funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka,
* {{Code|funkcja_parametry}} - funkcja, którą działamy na parametry adresu strony,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek strony adresu.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - pełny adres strony z parametrami i nagłówkiem,
* {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania,
* {{Code|w_adresie}} - czy rozpatrywać cały adres, a nie tylko parametry,
* {{Code|funkcja_strona}} - funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka,
* {{Code|funkcja_naglowek}} - funkcja, którą działamy na nagłówek.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia,
* {{Code|ile}} - {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przetworzenia.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
* {{Code|tekst}} - tekst do przetworzenia i po rozdzieleniu na trzy części,
* {{Code|ile1}} - ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej,
* {{Code|ile2}} - ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|adres}} - adres do zakodowania,
* {{Code|protokolarny}} - czy ma rozkładać adres na nazwę strony i protokół.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
* {{Code|html}} - adres z protokołem strony.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - funkcja do podstawowego kodowania adresu.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|elementy_adresu_strony}} - element adresu strony,
* {{Code|czy_parametry_strony}} - czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry,
* {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji tablicy transportu modułu,
* {{Code|z_kodowaniem}} - czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania,
* {{Code|protokolarny}} - czy uważać przy kodowaniu na protokoły pełnych adresów stron.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
* {{Code|html}} - adres do kodowania,
* {{Code|encode}} - czy kodować.
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
c2wrc7v1dkor9jxcvetge931wqrp3io
Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V
4
63907
553957
553258
2026-09-02T10:40:08Z
Persino
2851
/* Opis dalszy funkcji */
553957
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalsze parametry o wartościami zwracanych przez nią są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami i szablonami nowej linii i kresek w linii, tzn. ich zamiany każda z nich na jedną spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{s|Br}} i {{s|Hr}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa nowe zagnieżdzone linie w nowych liniach z szablonami i znacznikami centrowania, zastępując je odpowiednimi ich zawartościami, pozostawiając główną nową linię z szablonem lub znacznikiem centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu centrowania przy pomocy funkcji: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, nowe linie, nawet kresek, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, nowe linie powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany z drugą wartością {{Code|true}}, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikkowany: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, podany jako pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy przy pomocy tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, czy znacznikowy, którym jest: {{Tag|center}}, lub określone tabelą: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. W obu tych rozgałęzieniach funkcji jest uruchamiana procedura: {{LinkŚródtytuł|Modyfikacja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} {{Patrz|parametr1}} - to nic innego jak: {{Code|nazwa}} {{Patrz|nazwa}}, czyli jak nazwa znacznika,
** {{Code|parametr2}} {{Patrz|parametr2}} - to nic innego jak: {{Code|zawartość}} {{Patrz|zawartość}}, czyli zawartość znacznika,
** {{Code|parametr3}} {{Patrz|parametr3}} - to nic innego jak: {{Code|tab_atrybuty}} {{Patrz|tab_atrybuty}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się nie zmieniła, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
Funkcja jedynie działa w dwóch sprawdzanych zakresach, tzn. {{Code|SZABLON}} i {{Code|ZNACZNIK}}, w nich wywoływana jest funkcja {{LinkŚródtytuł|Modyfikacja}}, którego drugi element określa, czy coś się zmieniło, a pierwszą wartością jest ta wartość zmieniona, lub nie.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością, a ta nowa jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}}, to na poczatek tego czegoś nowego jest dodawany odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwie nowe linie, a na końcu jedna, i to jest zwracane, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną, lub nie, zawartość.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni {{LinkPatrz|czy_rozdział_dodatni}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię,
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni.
Funkcja wydziela poszczególne linie wewnętrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu {{Code|SZABLON}}, nowe linie: {{s|Br}}, nawet kreskowe: {{s|Hr}}, są zamieniane na spację. Szablony napisu wprowadzenia tekstu: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zamieniane na ich zawartości. A dla elementu {{Code|ZNACZNIK}}, czyli znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, są zamieniane na spację. A całe naczniki, tzn.: {{Tag|center}} i {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zamieniane na ich zawartości.
Dla znacznika: {{Tag|pre}}, czyli obiekt {{Code|PRE}}, gdy ona nie ma zawartości, to zamiast niego jest wyświetlana zawartość równą jednej spacji.
Dla specjalnego tagu {{Tag|nowiki}} mechanizmu MediaWiki znaki specjalne kodu zamieniane są na znaki kodu {{Strong|HTML}}, czyli według funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}. Gdy mamy rozdział dodatni według {{LinkPatrz|czy_rozdział_dodatni}}, wtedy znaki nowej linii {{Code|\n}} zawartości są zamieniane na znak jednej spacji. Podobnie robimy dla obiektu {{Code|ŻRÓDŁO}}.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu krok 1 ======
Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji w odpowiednie kody {{Strong|HTML}}, lub w edytować linki zewnętrzne {{Code|LINKZ}} bez nazwy, by napisać ich numerki uruchomień, aby była zachowana kolejność numerowania szablonów, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}}, która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w tym module.
{{HNumer|1=
======= Opis funkcji {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}, jako pierwszy argument modyfikujący tekst, w przypadku innym niż szablony i znaczniki referencji - nazwane i nienazwane, oraz numerujące linki zewnętrzne nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} - jak w: {{LinkPatrz|parametr1}}, jest to: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr2}} - jak w: {{LinkPatrz|parametr2}}, jest to: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr3}} - jak w: {{LinkPatrz|parametr3}}, jest to: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Gdy mamy {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, wtedy uruchamiamy funkcję:
{{HNumer|1=
======== {{Śródtytuł|FuncSzablon}}{{Code|FuncSzablon}} dla obiektów szablonowych, czyli typu SZABLON ========
}}
Funkcja zastępuje pewne elementy pewnym wyliczonym łańcuchem znaków, lub zwraca wartość {{Code|nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}.
{{HNumer|1=
========= Szablony sztucznego wprowadzenia tekstu =========
}}
Sprawdzamy, czy to jest jeden z szablonów z tabeli o nazwach kluczy z: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, na podstawie, której sprawdzamy, czy istnieje element tekstu, który jest bardzo ważny w analizie tych szablonów. A jeżeli ten parametr istnieje w zestawie parametrów, wtedy ustawiamy zmienną modykacji szablonu: {{Code|czy_modyfikacja}}, na wartość {{Code|false}}, aby było wiadomo, że modyfikacji w szablonie nie dokonano, jeżeli w nim nie znaleziono znaczników. Co potem uruchamiamy funkcję kompletowania tekstu wikikodu analizowanego szablonu: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, by wnętrze znacznika {{Tag|div}} zastąpić jej zawartością, wtedy i tylko wtedy, gdy funkcja: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, na podstawie analizy parametru: {{Code|tekst}}, zwróci wartość {{Code|true}}, a wtedy się nie dzieje, gdy w zawartości jest znak nowej linii, a przeciwnie w niej są rozdziały dodatnie, czy ujemne, wtedy na ten parametr są uruchamiane pewne funkcje, anulujące właściwości tych rozdziałów, i w takim razie jest ustawiany ten parametr modyfikacji na wartość prawdziwą, i wtedy kod tego szablonu jest zastąpiony odpowiednio zmodyfikowaną zawartością tego szablonu.
Po wyjściu z funkcji kompletowania jest sprawdzana zmienna modyfikacji: {{Code|czy_modyfikacja}}, czy przybiera wartość prawdziwą, a jeżeli tak, to zwracana jest wartość z tej funkcji na zewnątrz opisywanej.
{{HNumer|1=
========= {{Śródtytuł|AnalizaSzablonu}}{{Code|AnalizaSzablonu}} =========
}}
Uruchamiamy funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|b=tak}}}}, używając tabeli: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, do analizy szablonu podanej w parametrach szablonu, aby go zastąpić jego odpowiednią zawartością, a jeżeli ona zwróci jakiś nienilowy wynik, to ta funkcja przybiera tą wartość w postaci zwracanej, w innym wypadku jest sprawdzane, czy nazwa szablonu pasuje do jednych do kluczu z tabel: {{LinkPatrz|p.szablony_do_usuwania_z_tekstu}}, {{LinkPatrz|p.szablony_bez_generowania_napisowego}} i {{LinkPatrz|p.szablony_nie_typowo_linkowe}}. Jeżeli pasuje, to funkcja zwraca ciąg pusty, przeciwnie wartość {{Code|nil}}.
{{HNumer|1=
========= Parametry funkcji {{LinkŚródtytuł|AnalizaSzablonu}} =========
}}
Funkcja analizująca szablon pod pewnymi warunkami zamieniające pewne zawartości wywołań szablonów na wartości puste lub nie zwracające żadnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaSzablonu(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}.
Gdy funkcja {{LinkŚródtytuł|AnalizaSzablonu}}, zwróci wartość odpowiadających łańcuchowi znaków, wtedy opisywana funkcja nadrzędnna zwraca wartość pustą, to wtedy funkcja: {{LinkŚródtytuł|FuncSzablon}}, ma zwracaną wartość równą tej wartości, a jeżeli nie ma jej, to ona idzie dalej.
{{HNumer|1=
========= Modyfikacja napisów wprowadzenia tekstu szablonowych =========
}}
Uruchamiana jest funkcja {{LinkŚródtytuł|UsuwanieZnacznikowe}}, która zwraca dwie wartości {{Code|szablon}} i {{Code|czy_center}}.
{{HNumer|1=
========= Szablony generowania nagłówków - generowanie zawartości na podstawie pewnych wniosków =========
}}
{{Tab}}Jeżeli pierwszy parametr tej funkcji zwróci wartość nie {{Code|nil}}, wtedy wiadomo, że zawartość szablonu się zmieniła, wtedy sprawdzamy, czy wywołanie szablonowe, jest jednych ze znaczników: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli tak, to liczy jego zawartość, a jeśli ona istnieje, wtedy sprawdzamy, czy w niej jest rozdział dodatni, czy ujemny, a jeżeli jest, to funkcja zwraca tą zawartość z tabelą parametrów szablonu.
{{HNumer|1=
========== Aktualizacja bazy danych kodowania '''szablonowego''' zakodowanego wikikodu ==========
}}
Po wyjściu z tej funkcji jest sprawdzane, czy funkcja zwróci wartość odpowiadająca prawdziwej, jeżeli tak, to ona zwróci ten wynik, jeżeli nie, to aktualizowana jest pozycja z: {{Code|szablon}} {{Code|{{=}}}} {{Code|szablon}}, według:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
</syntaxhighlight>
A sama funkcja {{LinkŚródtytuł|FuncSzablon}} zakańcza się z wartością {{Code|nil}}.
{{HNumer|1=
========= Szablony generowania nagłówków - bez modyfikacji szablonów napisu wprowadzenia tekstu =========
}}
A gdy {{Code|szablon}} odpowiada wartości fałszywej, a {{Code|czy_center}} prawdziwej, wtedy szablon nie został zmodyfikowany, w takim razie sprawdzamy, czy nazwa szablonu pasuje do tej samej tabeli, co poprzednio dla prawdziwego {{Code|szablon}}, ale tutaj jest fałszywe, wtedy robimy podobne operacje, ale tym razem bez tabeli parametrów.
{{HNumer|1=
========= Szablony znaczników odpowiadające właściwym znacznikom '''HTML''' innym niż centrowania i nagłówków =========
}}
A gdy {{Code|szablon}} i {{Code|czy_center}} są równe odpowiadającej wartości fałszywej, wtedy sprawdzamy, czy szablon jest znacznikiem szablonowym z tabeli o pewnych kluczach: {{LinkPatrz|p.znaczniki_szablonowe}}. A jeżeli ma parametr z zawartością, to go przekształcamy szablonem {{LinkŚródtytuł|ZamienNaKody}}, by usunąc magiczność rozdziałów dpdatnich i ujemnych,jeżeli on znajduje się na samym poczatku, czy końcu zawartości.
Jeżeli funkcja jest tak zdfiniownana, tzn.: {{LinkŚródtytuł|FuncSzablon}}, jeżeli ma wynik odpowiadający prawdziwej wartości, wtedy jest zwracane {{Code|wynik,nil,true}} - co tutaj odpowiada zastępowaniom wartości, przeciwnie {{Code|nil,true}}, co tutaj odpowiada nierozwijaniu tej wartości.
{{HNumer|1=
======== Dalszy opis funkcji - obiekty nieszablonowe, czyli typu ZNACZNIK i inne ========
}}
{{Tab}}Dla {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}}, gdy nazwa znacznika nie jest {{Tag|center}} lub znacznikem wprowadzenia tekstu z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wtedy gdy jest nierówny: {{Tag|ref}}, {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, zatem definiujemy funkcją {{Code|fun}}, która zwracamy w postaci parametrów, do funkcji jako w zestawie argumentów zrzuconych: {{Code|fun,nil,true}}.
{{HNumer|1=
========= Znaczniki inne niż {{Tag|div}} =========
}}
Funkcja {{Code|fun}} ma definicję, która nie przyjmuje żadnych parametrów. W tej funkcji, gdy znacznik nie jest równy {{Tag|div}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a potem na jej wyniku {{LinkŚródtytuł|ZamienNaKody}}, a jeżeli zawartość nie istnieje, to ona zwróci wynik równy ciągowi pustemu.
{{HNumer|1=
========= Znaczniki warstw {{Tag|div}} =========
}}
A gdy jest jednak tym znacznikiem, to wtedy używamy funkcji dla parametru {{Code|tekst}}, czyli dla elementu wywołania szablonowego, gdy nie ma w nim rozdziałów dodatnich, czy ujemnych, czy są znaki nowej linii, wtedy przetwarzamy jego wynik, używając funkcji zastępowania {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przetwarzając i modyfikując odpowiednio niepustą i istniejącą jego zawartość, co następnie go zwracając. Dla innej jego zawartości jest zwracany ciag pusty.
{{HNumer|1=
========= Inne znaczniki niż rozważane wcześniej jako podstawa =========
}}
{{Tab}}Gdy znacznik nie jest tym, co myślimy, wtedy jest sprawdzana zawartość, czy istnieją w nim rozdziały dodatnie lub ujemne, to zwracany jest wynik taki symbolizujący według dokumentacji zastąpienie znacznika jego zawartością.
{{HNumer|1=
========= Znaczniki zostały zmodyfikowane przez funkcję obrabające znaczniki do jednej linii =========
}}
{{Tab}}Jeżeli funkcja nie przeszła dalszych etapów, to sprawdzany jest wynik funkcją {{LinkŚródtytuł|UsuwanieZnacznikowe}}, do modsyfikacji szablonowej i znacznikowej, jeżeli ma wartość równą odpowiadającej prawdziwej, wtedy w tabeli bazy kodów {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} dla tego obiektu i kodu jest naprawiana jego treść według tego wyniku uzyskanego z tej ostatniej funkcji.
{{Tab}}Dalej rzucany jest wynik nierozwijania, jeśli funkcja doszła do tego etapu.
{{HNumer|1=
======== Inne znaczniki specjalne mechanizmu MediaWiki oraz linki zewnętrzne i wewnętrzne ========
}}
Gdy obiekt jest równy {{Code|INNEPRE}} i zawartość składa się jego z samych odstępów, wtedy on jest zastępowany ciągiem pustym. Przeciwnie jest zrzucany wynik nierozwijania tego elementu.
{{HNumer|1=
========= Obiekty linków zewnętrznych i wewnętrznych =========
}}
Gdy mamy obiekt równy: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|b=tak}}}}, opisaną wcześniej, w nim znaczniki są zamieniane na ich zawartość, a jeżeli w nim tego nie ma, to nic nie jest robione.
Gdy dało się wtedy zaktualizować zmienną: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, to wtedy zmieniamy zawartość dla tego obiektu i kodu w tabeli bazy kodowania: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, na tą zawartość.
Sprawdzamy, czy ten link symbolizuje element spisu, którą sprawdzamy według funkcji: {{Code|{{sr|#p.CzyElementSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli nie, to funkcja zwraca wartość pustą, którą jest zastępowany taki link.
{{HNumer|1=
======== Wikitabele jako obiekty kodowania szablonowego, czyli elementy typu WIKITABELA ========
}}
Gdy obiekt jest o wartości {{Code|WIKITABELA}}, to wtedy wykorzystujemy zestaw funkcji: {{LzLua|mw.ustring.gsub}} i {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, aby przetworzyć tekst z tabelką, do zwykłych odnośników z linkami z wikitabeli, na przykład. Na samym końcu funkcja zwraca wynik do zastąpienia takiej wikitabeli pewnym ciągiem w odpowiedni udokomentowany sposób.
====== Zmiana tekstu krok 2 ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w mechanizmie '''MediaWiki''', ta funkcja działa dla każdej linii w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Funkcja upraszcza zawartość tych linii (rozdziałów) do najprostrzej postaci, by w nim bie byłó znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. Znaczniki nowej linii i kreski poziomej, czy znaki nowej linii, są zastępowane spacją.
Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjcalne. Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim.
====== Zmiana tekstu krok 3 ======
Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, napisu wprowadzenia tekstu, których ich nazwy pasują do: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia, a szablony o nazwach z tabeli: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiana jest nowa linia wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według funkcji podanej w nagłówku, ale też w funkcji w tabeli transportu, na podstawie użycia funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
==== Kod dalszy bez wybranej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ====
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{LinkPatrz|czy_rozdzialy_analizowac}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcja inicjująca jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{Code|{{sr|#p.IterTekst|b=tak}}}}.
==== Kod wspólny ====
===== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} =====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie.
====== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ======
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy innych obiektów niż szablon, czy znacznik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. W innym rozgałezieniu tej instrukcji ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
====== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ======
Funkcja rozważa ogólnie linie z obietami {{Code|SZABLON}} albo {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy szablonów znaczników, czy normalnych ich, innych niż centrowania i nagłówków, ale nadal znaczników.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy nie okładek, zatrzymując się właśne na nich, rozwijąc pierwszą z koleii okładkę. Iterator iteruje po zawartości jakiegoś elementu, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
{{HNumer|1=
======= {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} =======
}}
Funkcja właściwa do rozwazania szczególnego z obiektami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} lub {{Code|1}}, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
====== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ======
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści. Funcja służy do rozważania nagłówków centrowanych szablonowo, czy znacznikowo, a nawet gdy zamiast tego mamy znacznik nagłówka.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami,
* {{Code|hn_number}} {{Patrz|hn_number}} - czy to jest zawartość szablonu centrowania.
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, czy w spisie są jakieś początkowe artykuły, które nie należą do żadnego rozdziału, tzw. artykuły wstępne. Dalej są sprawdzane, czy wprowadzony tekstjako pierwszy argument, czy jest nagłówkiem spisu treści rozdziału centrowanego, czy nagłówkowego.
{{HNumer|1=
======= {{Śródtytuł|Spis}}{{Code|Spis}} =======
}}
Jest to funkcja szczególna do rozwazania szablonów centrowania spisów treści.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest linku spisu treści, wtedy dla istniejącego wpisu w pierwszej wartości sprawdzanej dla artykułu książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}, odpowiednimi wartościami, i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
Przeciwnie w innym wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{LinkPatrz|hn_number}} i {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
W innym wypadku nie jest zwracana żadna wartość.
====== Kod dalszy funkcji ======
{{HNumer|1=
======= Warunki wstępne =======
}}
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
Gdy mamy włączoną opcję: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, wtedy możemy powiedzieć, ze również {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
{{Tab}}Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału, dodatniego, czy ujemnego, na początku otrzymanego spisu treści dla jego początkowych linii.
{{HNumer|1=
======= Iterator po rozważanej zmiennej, czyli iteracja po tekście =======
}}
Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest później uruchamiana iteracja, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
{{HNumer|1=
======== Obiekt szablonowy, czyli typu SZABLON ========
}}
W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, a gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość {{Code|true}}, czyli znalazł okłądkę, przeciwnie na {{Code|false}}, a tu już nie.
{{HNumer|1=
======== Obiekt znacznikowy, czyli typu ZNACZNIK ========
}}
A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, a gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, a potem z tym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
{{HNumer|1=
======== Obiekty linkowe, czyli typu: LINKW i LINKZ, a więc linki wewnętrzne i zewnętrzne ========
}}
Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano okładkę, przeciwnie na {{Code|false}}, a tu już nie, tak jak dla obiektu {{Code|SZABLON}}.
====== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ======
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}} jest {{Code|true}}, i gdy zmienna {{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}, jest bez wartości, wtedy dla {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst nie kończy się na {{Code|.}}, dla określonej linii nieporządnej linii. W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, przeciwnie ustawiana jest wartość: {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. A gdy {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu, i zwracana jest wartość pusta z drugim nienilowym argumentem, gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadkujuż nie.
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}
{{Tab}}Gdy {{LinkPatrz|podrecznik}} ma wartość {{Code|false}}, wtedy dla żadnej wartości {{LinkPatrz|wartosc}}, gdy zmienna: {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem jest ciąg znaków określone wzorem {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}}, jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, a jeśli jednak tak, to zmienna: {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, w innym rozgłazieniu instrukcji '''jeśli''' dla: {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
; Gdy zmienna {{Code|podrecznik}} nie przyjmuje żadnej wartości logicznej
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, wtedy dla {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, też jest zakańczana, w przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
====== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ======
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
====== Użytek wartości ze zmiennej {{Code|tak}} ======
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{LinkPatrz|tak}} jest równa wartości prawdziwej, to uruchamiana jest funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, przeciwnie bezparametrowo {{Code|funkcja2}} {{LinkPatrz|funkcja2}}.
==== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ====
Liczymy poszczególne linie z iteratora otrzymanego z {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych
Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
;; Rozdział dodatni
Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|poziom_rozdzialu}}.
Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{LinkPatrz|czy_rozdzialy_analizowac}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami,w innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą i trzecią, funkcją, który z parametru {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} usuwa jej wartość.
;;; Pierwsza anonimowa funkcja
{{Tab}}Tą pierwszą funkcją, jest tak gdy: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. Przeciwnie sprawdzamy wartość zmiennej {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. A gdy nie ma takiego rozdziału, to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na {{LinkPatrz|szablon_spis_tresci}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. A jeżeli {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
;;; Druga anonimowa funkcja
{{Tab}}Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
;; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe
Gdy nie udało się znaleźć {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
==== Wartości zwracane przez iterator ====
Gdy: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
Gdzie parametry wartości zwracanych:
* {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str}} w kodzie,
* {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
Gdy {{LinkPatrz|__FUNKCJA2}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2}} z parametrem identyfikującym, że to jest rozdział {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
lqtcw6fvq9ahxha3u01duoab1xi4fz9
553958
553957
2026-09-02T11:01:13Z
Persino
2851
/* {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} */
553958
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalsze parametry o wartościami zwracanych przez nią są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{s|Br}} i {{s|Hr}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa nowe zagnieżdzone linie w nowych liniach z szablonami i znacznikami centrowania, zastępując je odpowiednimi ich zawartościami, pozostawiając główną nową linię z szablonem lub znacznikiem centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu centrowania przy pomocy funkcji: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, nowe linie, nawet kresek, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, nowe linie powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany z drugą wartością {{Code|true}}, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikkowany: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, podany jako pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy przy pomocy tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, czy znacznikowy, którym jest: {{Tag|center}}, lub określone tabelą: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. W obu tych rozgałęzieniach funkcji jest uruchamiana procedura: {{LinkŚródtytuł|Modyfikacja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} {{Patrz|parametr1}} - to nic innego jak: {{Code|nazwa}} {{Patrz|nazwa}}, czyli jak nazwa znacznika,
** {{Code|parametr2}} {{Patrz|parametr2}} - to nic innego jak: {{Code|zawartość}} {{Patrz|zawartość}}, czyli zawartość znacznika,
** {{Code|parametr3}} {{Patrz|parametr3}} - to nic innego jak: {{Code|tab_atrybuty}} {{Patrz|tab_atrybuty}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się nie zmieniła, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
Funkcja jedynie działa w dwóch sprawdzanych zakresach, tzn. {{Code|SZABLON}} i {{Code|ZNACZNIK}}, w nich wywoływana jest funkcja {{LinkŚródtytuł|Modyfikacja}}, którego drugi element określa, czy coś się zmieniło, a pierwszą wartością jest ta wartość zmieniona, lub nie.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością, a ta nowa jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}}, to na poczatek tego czegoś nowego jest dodawany odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwie nowe linie, a na końcu jedna, i to jest zwracane, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną, lub nie, zawartość.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni {{LinkPatrz|czy_rozdział_dodatni}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię,
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni.
Funkcja wydziela poszczególne linie wewnętrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu {{Code|SZABLON}}, nowe linie: {{s|Br}}, nawet kreskowe: {{s|Hr}}, są zamieniane na spację. Szablony napisu wprowadzenia tekstu: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zamieniane na ich zawartości. A dla elementu {{Code|ZNACZNIK}}, czyli znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, są zamieniane na spację. A całe naczniki, tzn.: {{Tag|center}} i {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zamieniane na ich zawartości.
Dla znacznika: {{Tag|pre}}, czyli obiekt {{Code|PRE}}, gdy ona nie ma zawartości, to zamiast niego jest wyświetlana zawartość równą jednej spacji.
Dla specjalnego tagu {{Tag|nowiki}} mechanizmu MediaWiki znaki specjalne kodu zamieniane są na znaki kodu {{Strong|HTML}}, czyli według funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}. Gdy mamy rozdział dodatni według {{LinkPatrz|czy_rozdział_dodatni}}, wtedy znaki nowej linii {{Code|\n}} zawartości są zamieniane na znak jednej spacji. Podobnie robimy dla obiektu {{Code|ŻRÓDŁO}}.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu krok 1 ======
Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji w odpowiednie kody {{Strong|HTML}}, lub w edytować linki zewnętrzne {{Code|LINKZ}} bez nazwy, by napisać ich numerki uruchomień, aby była zachowana kolejność numerowania szablonów, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}}, która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w tym module.
{{HNumer|1=
======= Opis funkcji {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}, jako pierwszy argument modyfikujący tekst, w przypadku innym niż szablony i znaczniki referencji - nazwane i nienazwane, oraz numerujące linki zewnętrzne nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} - jak w: {{LinkPatrz|parametr1}}, jest to: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr2}} - jak w: {{LinkPatrz|parametr2}}, jest to: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr3}} - jak w: {{LinkPatrz|parametr3}}, jest to: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Gdy mamy {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, wtedy uruchamiamy funkcję:
{{HNumer|1=
======== {{Śródtytuł|FuncSzablon}}{{Code|FuncSzablon}} dla obiektów szablonowych, czyli typu SZABLON ========
}}
Funkcja zastępuje pewne elementy pewnym wyliczonym łańcuchem znaków, lub zwraca wartość {{Code|nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}.
{{HNumer|1=
========= Szablony sztucznego wprowadzenia tekstu =========
}}
Sprawdzamy, czy to jest jeden z szablonów z tabeli o nazwach kluczy z: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, na podstawie, której sprawdzamy, czy istnieje element tekstu, który jest bardzo ważny w analizie tych szablonów. A jeżeli ten parametr istnieje w zestawie parametrów, wtedy ustawiamy zmienną modykacji szablonu: {{Code|czy_modyfikacja}}, na wartość {{Code|false}}, aby było wiadomo, że modyfikacji w szablonie nie dokonano, jeżeli w nim nie znaleziono znaczników. Co potem uruchamiamy funkcję kompletowania tekstu wikikodu analizowanego szablonu: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, by wnętrze znacznika {{Tag|div}} zastąpić jej zawartością, wtedy i tylko wtedy, gdy funkcja: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, na podstawie analizy parametru: {{Code|tekst}}, zwróci wartość {{Code|true}}, a wtedy się nie dzieje, gdy w zawartości jest znak nowej linii, a przeciwnie w niej są rozdziały dodatnie, czy ujemne, wtedy na ten parametr są uruchamiane pewne funkcje, anulujące właściwości tych rozdziałów, i w takim razie jest ustawiany ten parametr modyfikacji na wartość prawdziwą, i wtedy kod tego szablonu jest zastąpiony odpowiednio zmodyfikowaną zawartością tego szablonu.
Po wyjściu z funkcji kompletowania jest sprawdzana zmienna modyfikacji: {{Code|czy_modyfikacja}}, czy przybiera wartość prawdziwą, a jeżeli tak, to zwracana jest wartość z tej funkcji na zewnątrz opisywanej.
{{HNumer|1=
========= {{Śródtytuł|AnalizaSzablonu}}{{Code|AnalizaSzablonu}} =========
}}
Uruchamiamy funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|b=tak}}}}, używając tabeli: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, do analizy szablonu podanej w parametrach szablonu, aby go zastąpić jego odpowiednią zawartością, a jeżeli ona zwróci jakiś nienilowy wynik, to ta funkcja przybiera tą wartość w postaci zwracanej, w innym wypadku jest sprawdzane, czy nazwa szablonu pasuje do jednych do kluczu z tabel: {{LinkPatrz|p.szablony_do_usuwania_z_tekstu}}, {{LinkPatrz|p.szablony_bez_generowania_napisowego}} i {{LinkPatrz|p.szablony_nie_typowo_linkowe}}. Jeżeli pasuje, to funkcja zwraca ciąg pusty, przeciwnie wartość {{Code|nil}}.
{{HNumer|1=
========= Parametry funkcji {{LinkŚródtytuł|AnalizaSzablonu}} =========
}}
Funkcja analizująca szablon pod pewnymi warunkami zamieniające pewne zawartości wywołań szablonów na wartości puste lub nie zwracające żadnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaSzablonu(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}.
Gdy funkcja {{LinkŚródtytuł|AnalizaSzablonu}}, zwróci wartość odpowiadających łańcuchowi znaków, wtedy opisywana funkcja nadrzędnna zwraca wartość pustą, to wtedy funkcja: {{LinkŚródtytuł|FuncSzablon}}, ma zwracaną wartość równą tej wartości, a jeżeli nie ma jej, to ona idzie dalej.
{{HNumer|1=
========= Modyfikacja napisów wprowadzenia tekstu szablonowych =========
}}
Uruchamiana jest funkcja {{LinkŚródtytuł|UsuwanieZnacznikowe}}, która zwraca dwie wartości {{Code|szablon}} i {{Code|czy_center}}.
{{HNumer|1=
========= Szablony generowania nagłówków - generowanie zawartości na podstawie pewnych wniosków =========
}}
{{Tab}}Jeżeli pierwszy parametr tej funkcji zwróci wartość nie {{Code|nil}}, wtedy wiadomo, że zawartość szablonu się zmieniła, wtedy sprawdzamy, czy wywołanie szablonowe, jest jednych ze znaczników: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli tak, to liczy jego zawartość, a jeśli ona istnieje, wtedy sprawdzamy, czy w niej jest rozdział dodatni, czy ujemny, a jeżeli jest, to funkcja zwraca tą zawartość z tabelą parametrów szablonu.
{{HNumer|1=
========== Aktualizacja bazy danych kodowania '''szablonowego''' zakodowanego wikikodu ==========
}}
Po wyjściu z tej funkcji jest sprawdzane, czy funkcja zwróci wartość odpowiadająca prawdziwej, jeżeli tak, to ona zwróci ten wynik, jeżeli nie, to aktualizowana jest pozycja z: {{Code|szablon}} {{Code|{{=}}}} {{Code|szablon}}, według:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
</syntaxhighlight>
A sama funkcja {{LinkŚródtytuł|FuncSzablon}} zakańcza się z wartością {{Code|nil}}.
{{HNumer|1=
========= Szablony generowania nagłówków - bez modyfikacji szablonów napisu wprowadzenia tekstu =========
}}
A gdy {{Code|szablon}} odpowiada wartości fałszywej, a {{Code|czy_center}} prawdziwej, wtedy szablon nie został zmodyfikowany, w takim razie sprawdzamy, czy nazwa szablonu pasuje do tej samej tabeli, co poprzednio dla prawdziwego {{Code|szablon}}, ale tutaj jest fałszywe, wtedy robimy podobne operacje, ale tym razem bez tabeli parametrów.
{{HNumer|1=
========= Szablony znaczników odpowiadające właściwym znacznikom '''HTML''' innym niż centrowania i nagłówków =========
}}
A gdy {{Code|szablon}} i {{Code|czy_center}} są równe odpowiadającej wartości fałszywej, wtedy sprawdzamy, czy szablon jest znacznikiem szablonowym z tabeli o pewnych kluczach: {{LinkPatrz|p.znaczniki_szablonowe}}. A jeżeli ma parametr z zawartością, to go przekształcamy szablonem {{LinkŚródtytuł|ZamienNaKody}}, by usunąc magiczność rozdziałów dpdatnich i ujemnych,jeżeli on znajduje się na samym poczatku, czy końcu zawartości.
Jeżeli funkcja jest tak zdfiniownana, tzn.: {{LinkŚródtytuł|FuncSzablon}}, jeżeli ma wynik odpowiadający prawdziwej wartości, wtedy jest zwracane {{Code|wynik,nil,true}} - co tutaj odpowiada zastępowaniom wartości, przeciwnie {{Code|nil,true}}, co tutaj odpowiada nierozwijaniu tej wartości.
{{HNumer|1=
======== Dalszy opis funkcji - obiekty nieszablonowe, czyli typu ZNACZNIK i inne ========
}}
{{Tab}}Dla {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}}, gdy nazwa znacznika nie jest {{Tag|center}} lub znacznikem wprowadzenia tekstu z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wtedy gdy jest nierówny: {{Tag|ref}}, {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, zatem definiujemy funkcją {{Code|fun}}, która zwracamy w postaci parametrów, do funkcji jako w zestawie argumentów zrzuconych: {{Code|fun,nil,true}}.
{{HNumer|1=
========= Znaczniki inne niż {{Tag|div}} =========
}}
Funkcja {{Code|fun}} ma definicję, która nie przyjmuje żadnych parametrów. W tej funkcji, gdy znacznik nie jest równy {{Tag|div}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a potem na jej wyniku {{LinkŚródtytuł|ZamienNaKody}}, a jeżeli zawartość nie istnieje, to ona zwróci wynik równy ciągowi pustemu.
{{HNumer|1=
========= Znaczniki warstw {{Tag|div}} =========
}}
A gdy jest jednak tym znacznikiem, to wtedy używamy funkcji dla parametru {{Code|tekst}}, czyli dla elementu wywołania szablonowego, gdy nie ma w nim rozdziałów dodatnich, czy ujemnych, czy są znaki nowej linii, wtedy przetwarzamy jego wynik, używając funkcji zastępowania {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przetwarzając i modyfikując odpowiednio niepustą i istniejącą jego zawartość, co następnie go zwracając. Dla innej jego zawartości jest zwracany ciag pusty.
{{HNumer|1=
========= Inne znaczniki niż rozważane wcześniej jako podstawa =========
}}
{{Tab}}Gdy znacznik nie jest tym, co myślimy, wtedy jest sprawdzana zawartość, czy istnieją w nim rozdziały dodatnie lub ujemne, to zwracany jest wynik taki symbolizujący według dokumentacji zastąpienie znacznika jego zawartością.
{{HNumer|1=
========= Znaczniki zostały zmodyfikowane przez funkcję obrabające znaczniki do jednej linii =========
}}
{{Tab}}Jeżeli funkcja nie przeszła dalszych etapów, to sprawdzany jest wynik funkcją {{LinkŚródtytuł|UsuwanieZnacznikowe}}, do modsyfikacji szablonowej i znacznikowej, jeżeli ma wartość równą odpowiadającej prawdziwej, wtedy w tabeli bazy kodów {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} dla tego obiektu i kodu jest naprawiana jego treść według tego wyniku uzyskanego z tej ostatniej funkcji.
{{Tab}}Dalej rzucany jest wynik nierozwijania, jeśli funkcja doszła do tego etapu.
{{HNumer|1=
======== Inne znaczniki specjalne mechanizmu MediaWiki oraz linki zewnętrzne i wewnętrzne ========
}}
Gdy obiekt jest równy {{Code|INNEPRE}} i zawartość składa się jego z samych odstępów, wtedy on jest zastępowany ciągiem pustym. Przeciwnie jest zrzucany wynik nierozwijania tego elementu.
{{HNumer|1=
========= Obiekty linków zewnętrznych i wewnętrznych =========
}}
Gdy mamy obiekt równy: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|b=tak}}}}, opisaną wcześniej, w nim znaczniki są zamieniane na ich zawartość, a jeżeli w nim tego nie ma, to nic nie jest robione.
Gdy dało się wtedy zaktualizować zmienną: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, to wtedy zmieniamy zawartość dla tego obiektu i kodu w tabeli bazy kodowania: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, na tą zawartość.
Sprawdzamy, czy ten link symbolizuje element spisu, którą sprawdzamy według funkcji: {{Code|{{sr|#p.CzyElementSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli nie, to funkcja zwraca wartość pustą, którą jest zastępowany taki link.
{{HNumer|1=
======== Wikitabele jako obiekty kodowania szablonowego, czyli elementy typu WIKITABELA ========
}}
Gdy obiekt jest o wartości {{Code|WIKITABELA}}, to wtedy wykorzystujemy zestaw funkcji: {{LzLua|mw.ustring.gsub}} i {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, aby przetworzyć tekst z tabelką, do zwykłych odnośników z linkami z wikitabeli, na przykład. Na samym końcu funkcja zwraca wynik do zastąpienia takiej wikitabeli pewnym ciągiem w odpowiedni udokomentowany sposób.
====== Zmiana tekstu krok 2 ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w mechanizmie '''MediaWiki''', ta funkcja działa dla każdej linii w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Funkcja upraszcza zawartość tych linii (rozdziałów) do najprostrzej postaci, by w nim bie byłó znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. Znaczniki nowej linii i kreski poziomej, czy znaki nowej linii, są zastępowane spacją.
Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjcalne. Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim.
====== Zmiana tekstu krok 3 ======
Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, napisu wprowadzenia tekstu, których ich nazwy pasują do: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia, a szablony o nazwach z tabeli: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiana jest nowa linia wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według funkcji podanej w nagłówku, ale też w funkcji w tabeli transportu, na podstawie użycia funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
==== Kod dalszy bez wybranej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ====
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{LinkPatrz|czy_rozdzialy_analizowac}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcja inicjująca jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{Code|{{sr|#p.IterTekst|b=tak}}}}.
==== Kod wspólny ====
===== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} =====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie.
====== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ======
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy innych obiektów niż szablon, czy znacznik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. W innym rozgałezieniu tej instrukcji ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
====== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ======
Funkcja rozważa ogólnie linie z obietami {{Code|SZABLON}} albo {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy szablonów znaczników, czy normalnych ich, innych niż centrowania i nagłówków, ale nadal znaczników.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy nie okładek, zatrzymując się właśne na nich, rozwijąc pierwszą z koleii okładkę. Iterator iteruje po zawartości jakiegoś elementu, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
{{HNumer|1=
======= {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} =======
}}
Funkcja właściwa do rozwazania szczególnego z obiektami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} lub {{Code|1}}, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
====== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ======
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści. Funcja służy do rozważania nagłówków centrowanych szablonowo, czy znacznikowo, a nawet gdy zamiast tego mamy znacznik nagłówka.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami,
* {{Code|hn_number}} {{Patrz|hn_number}} - czy to jest zawartość szablonu centrowania.
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, czy w spisie są jakieś początkowe artykuły, które nie należą do żadnego rozdziału, tzw. artykuły wstępne. Dalej są sprawdzane, czy wprowadzony tekstjako pierwszy argument, czy jest nagłówkiem spisu treści rozdziału centrowanego, czy nagłówkowego.
{{HNumer|1=
======= {{Śródtytuł|Spis}}{{Code|Spis}} =======
}}
Jest to funkcja szczególna do rozwazania szablonów centrowania spisów treści.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest linku spisu treści, wtedy dla istniejącego wpisu w pierwszej wartości sprawdzanej dla artykułu książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}, odpowiednimi wartościami, i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
Przeciwnie w innym wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{LinkPatrz|hn_number}} i {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
W innym wypadku nie jest zwracana żadna wartość.
====== Kod dalszy funkcji ======
{{HNumer|1=
======= Warunki wstępne =======
}}
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
Gdy mamy włączoną opcję: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, wtedy możemy powiedzieć, ze również {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
{{Tab}}Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału, dodatniego, czy ujemnego, na początku otrzymanego spisu treści dla jego początkowych linii.
{{HNumer|1=
======= Iterator po rozważanej zmiennej, czyli iteracja po tekście =======
}}
Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest później uruchamiana iteracja, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
{{HNumer|1=
======== Obiekt szablonowy, czyli typu SZABLON ========
}}
W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, a gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość {{Code|true}}, czyli znalazł okłądkę, przeciwnie na {{Code|false}}, a tu już nie.
{{HNumer|1=
======== Obiekt znacznikowy, czyli typu ZNACZNIK ========
}}
A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, a gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, a potem z tym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
{{HNumer|1=
======== Obiekty linkowe, czyli typu: LINKW i LINKZ, a więc linki wewnętrzne i zewnętrzne ========
}}
Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano okładkę, przeciwnie na {{Code|false}}, a tu już nie, tak jak dla obiektu {{Code|SZABLON}}.
====== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ======
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}} jest {{Code|true}}, i gdy zmienna {{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}, jest bez wartości, wtedy dla {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst nie kończy się na {{Code|.}}, dla określonej linii nieporządnej linii. W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, przeciwnie ustawiana jest wartość: {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. A gdy {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu, i zwracana jest wartość pusta z drugim nienilowym argumentem, gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadkujuż nie.
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}
{{Tab}}Gdy {{LinkPatrz|podrecznik}} ma wartość {{Code|false}}, wtedy dla żadnej wartości {{LinkPatrz|wartosc}}, gdy zmienna: {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem jest ciąg znaków określone wzorem {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}}, jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, a jeśli jednak tak, to zmienna: {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, w innym rozgłazieniu instrukcji '''jeśli''' dla: {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
; Gdy zmienna {{Code|podrecznik}} nie przyjmuje żadnej wartości logicznej
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, wtedy dla {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, też jest zakańczana, w przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
====== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ======
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
====== Użytek wartości ze zmiennej {{Code|tak}} ======
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{LinkPatrz|tak}} jest równa wartości prawdziwej, to uruchamiana jest funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, przeciwnie bezparametrowo {{Code|funkcja2}} {{LinkPatrz|funkcja2}}.
==== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ====
Liczymy poszczególne linie z iteratora otrzymanego z {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych
Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
;; Rozdział dodatni
Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|poziom_rozdzialu}}.
Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{LinkPatrz|czy_rozdzialy_analizowac}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami,w innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą i trzecią, funkcją, który z parametru {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} usuwa jej wartość.
;;; Pierwsza anonimowa funkcja
{{Tab}}Tą pierwszą funkcją, jest tak gdy: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. Przeciwnie sprawdzamy wartość zmiennej {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. A gdy nie ma takiego rozdziału, to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na {{LinkPatrz|szablon_spis_tresci}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. A jeżeli {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
;;; Druga anonimowa funkcja
{{Tab}}Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
;; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe
Gdy nie udało się znaleźć {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
==== Wartości zwracane przez iterator ====
Gdy: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
Gdzie parametry wartości zwracanych:
* {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str}} w kodzie,
* {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
Gdy {{LinkPatrz|__FUNKCJA2}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2}} z parametrem identyfikującym, że to jest rozdział {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
a5qbf7g99v43srdomx6kulqtkb5bewq
553959
553958
2026-09-02T11:07:59Z
Persino
2851
/* Opis dalszy funkcji */
553959
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalsze parametry o wartościami zwracanych przez nią są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{s|Br}} i {{s|Hr}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa nowe zagnieżdzone linie w nowych liniach z szablonami i znacznikami centrowania, zastępując je odpowiednimi ich zawartościami, pozostawiając główną nową linię z szablonem lub znacznikiem centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu centrowania przy pomocy funkcji: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, nowe linie, nawet kresek, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, nowe linie powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany z drugą wartością {{Code|true}}, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikkowany: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, podany jako pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy przy pomocy tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, czy znacznikowy, którym jest: {{Tag|center}}, lub określone tabelą: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. W obu tych rozgałęzieniach funkcji jest uruchamiana procedura: {{LinkŚródtytuł|Modyfikacja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} {{Patrz|parametr1}} - to nic innego jak: {{Code|nazwa}} {{Patrz|nazwa}}, czyli jak nazwa znacznika,
** {{Code|parametr2}} {{Patrz|parametr2}} - to nic innego jak: {{Code|zawartość}} {{Patrz|zawartość}}, czyli zawartość znacznika,
** {{Code|parametr3}} {{Patrz|parametr3}} - to nic innego jak: {{Code|tab_atrybuty}} {{Patrz|tab_atrybuty}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się nie zmieniła, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
Funkcja jedynie działa w dwóch sprawdzanych zakresach, tzn. {{Code|SZABLON}} i {{Code|ZNACZNIK}}, w nich wywoływana jest funkcja {{LinkŚródtytuł|Modyfikacja}}, którego drugi element określa, czy coś się zmieniło, a pierwszą wartością jest ta wartość zmieniona, lub nie.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością, a ta nowa jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}}, to na poczatek tego czegoś nowego jest dodawany odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwie nowe linie, a na końcu jedna, i to jest zwracane, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną, lub nie, zawartość.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni {{LinkPatrz|czy_rozdział_dodatni}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię,
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni.
Funkcja wydziela poszczególne linie wewnętrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu {{Code|SZABLON}}, nowe linie: {{s|Br}}, nawet kreskowe: {{s|Hr}}, są zamieniane na spację. Szablony napisu wprowadzenia tekstu: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zamieniane na ich zawartości. A dla elementu {{Code|ZNACZNIK}}, czyli znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, są zamieniane na spację. A całe naczniki, tzn.: {{Tag|center}} i {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zamieniane na ich zawartości.
Dla znacznika: {{Tag|pre}}, czyli obiekt {{Code|PRE}}, gdy ona nie ma zawartości, to zamiast niego jest wyświetlana zawartość równą jednej spacji.
Dla specjalnego tagu {{Tag|nowiki}} mechanizmu MediaWiki znaki specjalne kodu zamieniane są na znaki kodu {{Strong|HTML}}, czyli według funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}. Gdy mamy rozdział dodatni według {{LinkPatrz|czy_rozdział_dodatni}}, wtedy znaki nowej linii {{Code|\n}} zawartości są zamieniane na znak jednej spacji. Podobnie robimy dla obiektu {{Code|ŻRÓDŁO}}.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu krok 1 ======
Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji w odpowiednie kody {{Strong|HTML}}, lub w edytować linki zewnętrzne {{Code|LINKZ}} bez nazwy, by napisać ich numerki uruchomień, aby była zachowana kolejność numerowania szablonów, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}}, która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w tym module.
{{HNumer|1=
======= Opis funkcji {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}, jako pierwszy argument modyfikujący tekst, w przypadku innym niż szablony i znaczniki referencji - nazwane i nienazwane, oraz numerujące linki zewnętrzne nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} - jak w: {{LinkPatrz|parametr1}}, jest to: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr2}} - jak w: {{LinkPatrz|parametr2}}, jest to: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr3}} - jak w: {{LinkPatrz|parametr3}}, jest to: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Gdy mamy {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, wtedy uruchamiamy funkcję:
{{HNumer|1=
======== {{Śródtytuł|FuncSzablon}}{{Code|FuncSzablon}} dla obiektów szablonowych, czyli typu SZABLON ========
}}
Funkcja zastępuje pewne elementy pewnym wyliczonym łańcuchem znaków, lub zwraca wartość {{Code|nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}.
{{HNumer|1=
========= Szablony sztucznego wprowadzenia tekstu =========
}}
Sprawdzamy, czy to jest jeden z szablonów z tabeli o nazwach kluczy z: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, na podstawie, której sprawdzamy, czy istnieje element tekstu, który jest bardzo ważny w analizie tych szablonów. A jeżeli ten parametr istnieje w zestawie parametrów, wtedy ustawiamy zmienną modykacji szablonu: {{Code|czy_modyfikacja}}, na wartość {{Code|false}}, aby było wiadomo, że modyfikacji w szablonie nie dokonano, jeżeli w nim nie znaleziono znaczników. Co potem uruchamiamy funkcję kompletowania tekstu wikikodu analizowanego szablonu: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, by wnętrze znacznika {{Tag|div}} zastąpić jej zawartością, wtedy i tylko wtedy, gdy funkcja: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, na podstawie analizy parametru: {{Code|tekst}}, zwróci wartość {{Code|true}}, a wtedy się nie dzieje, gdy w zawartości jest znak nowej linii, a przeciwnie w niej są rozdziały dodatnie, czy ujemne, wtedy na ten parametr są uruchamiane pewne funkcje, anulujące właściwości tych rozdziałów, i w takim razie jest ustawiany ten parametr modyfikacji na wartość prawdziwą, i wtedy kod tego szablonu jest zastąpiony odpowiednio zmodyfikowaną zawartością tego szablonu.
Po wyjściu z funkcji kompletowania jest sprawdzana zmienna modyfikacji: {{Code|czy_modyfikacja}}, czy przybiera wartość prawdziwą, a jeżeli tak, to zwracana jest wartość z tej funkcji na zewnątrz opisywanej.
{{HNumer|1=
========= {{Śródtytuł|AnalizaSzablonu}}{{Code|AnalizaSzablonu}} =========
}}
Uruchamiamy funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|b=tak}}}}, używając tabeli: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, do analizy szablonu podanej w parametrach szablonu, aby go zastąpić jego odpowiednią zawartością, a jeżeli ona zwróci jakiś nienilowy wynik, to ta funkcja przybiera tą wartość w postaci zwracanej, w innym wypadku jest sprawdzane, czy nazwa szablonu pasuje do jednych do kluczu z tabel: {{LinkPatrz|p.szablony_do_usuwania_z_tekstu}}, {{LinkPatrz|p.szablony_bez_generowania_napisowego}} i {{LinkPatrz|p.szablony_nie_typowo_linkowe}}. Jeżeli pasuje, to funkcja zwraca ciąg pusty, przeciwnie wartość {{Code|nil}}.
{{HNumer|1=
========= Parametry funkcji {{LinkŚródtytuł|AnalizaSzablonu}} =========
}}
Funkcja analizująca szablon pod pewnymi warunkami zamieniające pewne zawartości wywołań szablonów na wartości puste lub nie zwracające żadnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaSzablonu(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}.
Gdy funkcja {{LinkŚródtytuł|AnalizaSzablonu}}, zwróci wartość odpowiadających łańcuchowi znaków, wtedy opisywana funkcja nadrzędnna zwraca wartość pustą, to wtedy funkcja: {{LinkŚródtytuł|FuncSzablon}}, ma zwracaną wartość równą tej wartości, a jeżeli nie ma jej, to ona idzie dalej.
{{HNumer|1=
========= Modyfikacja napisów wprowadzenia tekstu szablonowych =========
}}
Uruchamiana jest funkcja {{LinkŚródtytuł|UsuwanieZnacznikowe}}, która zwraca dwie wartości {{Code|szablon}} i {{Code|czy_center}}.
{{HNumer|1=
========= Szablony generowania nagłówków - generowanie zawartości na podstawie pewnych wniosków =========
}}
{{Tab}}Jeżeli pierwszy parametr tej funkcji zwróci wartość nie {{Code|nil}}, wtedy wiadomo, że zawartość szablonu się zmieniła, wtedy sprawdzamy, czy wywołanie szablonowe, jest jednych ze znaczników: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli tak, to liczy jego zawartość, a jeśli ona istnieje, wtedy sprawdzamy, czy w niej jest rozdział dodatni, czy ujemny, a jeżeli jest, to funkcja zwraca tą zawartość z tabelą parametrów szablonu.
{{HNumer|1=
========== Aktualizacja bazy danych kodowania '''szablonowego''' zakodowanego wikikodu ==========
}}
Po wyjściu z tej funkcji jest sprawdzane, czy funkcja zwróci wartość odpowiadająca prawdziwej, jeżeli tak, to ona zwróci ten wynik, jeżeli nie, to aktualizowana jest pozycja z: {{Code|szablon}} {{Code|{{=}}}} {{Code|szablon}}, według:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
</syntaxhighlight>
A sama funkcja {{LinkŚródtytuł|FuncSzablon}} zakańcza się z wartością {{Code|nil}}.
{{HNumer|1=
========= Szablony generowania nagłówków - bez modyfikacji szablonów napisu wprowadzenia tekstu =========
}}
A gdy {{Code|szablon}} odpowiada wartości fałszywej, a {{Code|czy_center}} prawdziwej, wtedy szablon nie został zmodyfikowany, w takim razie sprawdzamy, czy nazwa szablonu pasuje do tej samej tabeli, co poprzednio dla prawdziwego {{Code|szablon}}, ale tutaj jest fałszywe, wtedy robimy podobne operacje, ale tym razem bez tabeli parametrów.
{{HNumer|1=
========= Szablony znaczników odpowiadające właściwym znacznikom '''HTML''' innym niż centrowania i nagłówków =========
}}
A gdy {{Code|szablon}} i {{Code|czy_center}} są równe odpowiadającej wartości fałszywej, wtedy sprawdzamy, czy szablon jest znacznikiem szablonowym z tabeli o pewnych kluczach: {{LinkPatrz|p.znaczniki_szablonowe}}. A jeżeli ma parametr z zawartością, to go przekształcamy szablonem {{LinkŚródtytuł|ZamienNaKody}}, by usunąc magiczność rozdziałów dpdatnich i ujemnych,jeżeli on znajduje się na samym poczatku, czy końcu zawartości.
Jeżeli funkcja jest tak zdfiniownana, tzn.: {{LinkŚródtytuł|FuncSzablon}}, jeżeli ma wynik odpowiadający prawdziwej wartości, wtedy jest zwracane {{Code|wynik,nil,true}} - co tutaj odpowiada zastępowaniom wartości, przeciwnie {{Code|nil,true}}, co tutaj odpowiada nierozwijaniu tej wartości.
{{HNumer|1=
======== Dalszy opis funkcji - obiekty nieszablonowe, czyli typu ZNACZNIK i inne ========
}}
{{Tab}}Dla {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}}, gdy nazwa znacznika nie jest {{Tag|center}} lub znacznikem wprowadzenia tekstu z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wtedy gdy jest nierówny: {{Tag|ref}}, {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, zatem definiujemy funkcją {{Code|fun}}, która zwracamy w postaci parametrów, do funkcji jako w zestawie argumentów zrzuconych: {{Code|fun,nil,true}}.
{{HNumer|1=
========= Znaczniki inne niż {{Tag|div}} =========
}}
Funkcja {{Code|fun}} ma definicję, która nie przyjmuje żadnych parametrów. W tej funkcji, gdy znacznik nie jest równy {{Tag|div}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a potem na jej wyniku {{LinkŚródtytuł|ZamienNaKody}}, a jeżeli zawartość nie istnieje, to ona zwróci wynik równy ciągowi pustemu.
{{HNumer|1=
========= Znaczniki warstw {{Tag|div}} =========
}}
A gdy jest jednak tym znacznikiem, to wtedy używamy funkcji dla parametru {{Code|tekst}}, czyli dla elementu wywołania szablonowego, gdy nie ma w nim rozdziałów dodatnich, czy ujemnych, czy są znaki nowej linii, wtedy przetwarzamy jego wynik, używając funkcji zastępowania {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przetwarzając i modyfikując odpowiednio niepustą i istniejącą jego zawartość, co następnie go zwracając. Dla innej jego zawartości jest zwracany ciag pusty.
{{HNumer|1=
========= Inne znaczniki niż rozważane wcześniej jako podstawa =========
}}
{{Tab}}Gdy znacznik nie jest tym, co myślimy, wtedy jest sprawdzana zawartość, czy istnieją w nim rozdziały dodatnie lub ujemne, to zwracany jest wynik taki symbolizujący według dokumentacji zastąpienie znacznika jego zawartością.
{{HNumer|1=
========= Znaczniki zostały zmodyfikowane przez funkcję obrabające znaczniki do jednej linii =========
}}
{{Tab}}Jeżeli funkcja nie przeszła dalszych etapów, to sprawdzany jest wynik funkcją {{LinkŚródtytuł|UsuwanieZnacznikowe}}, do modsyfikacji szablonowej i znacznikowej, jeżeli ma wartość równą odpowiadającej prawdziwej, wtedy w tabeli bazy kodów {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} dla tego obiektu i kodu jest naprawiana jego treść według tego wyniku uzyskanego z tej ostatniej funkcji.
{{Tab}}Dalej rzucany jest wynik nierozwijania, jeśli funkcja doszła do tego etapu.
{{HNumer|1=
======== Inne znaczniki specjalne mechanizmu MediaWiki oraz linki zewnętrzne i wewnętrzne ========
}}
Gdy obiekt jest równy {{Code|INNEPRE}} i zawartość składa się jego z samych odstępów, wtedy on jest zastępowany ciągiem pustym. Przeciwnie jest zrzucany wynik nierozwijania tego elementu.
{{HNumer|1=
========= Obiekty linków zewnętrznych i wewnętrznych =========
}}
Gdy mamy obiekt równy: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|b=tak}}}}, opisaną wcześniej, w nim znaczniki są zamieniane na ich zawartość, a jeżeli w nim tego nie ma, to nic nie jest robione.
Gdy dało się wtedy zaktualizować zmienną: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, to wtedy zmieniamy zawartość dla tego obiektu i kodu w tabeli bazy kodowania: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, na tą zawartość.
Sprawdzamy, czy ten link symbolizuje element spisu, którą sprawdzamy według funkcji: {{Code|{{sr|#p.CzyElementSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli nie, to funkcja zwraca wartość pustą, którą jest zastępowany taki link.
{{HNumer|1=
======== Wikitabele jako obiekty kodowania szablonowego, czyli elementy typu WIKITABELA ========
}}
Gdy obiekt jest o wartości {{Code|WIKITABELA}}, to wtedy wykorzystujemy zestaw funkcji: {{LzLua|mw.ustring.gsub}} i {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, aby przetworzyć tekst z tabelką, do zwykłych odnośników z linkami z wikitabeli, na przykład. Na samym końcu funkcja zwraca wynik do zastąpienia takiej wikitabeli pewnym ciągiem w odpowiedni udokomentowany sposób.
====== Zmiana tekstu krok 2 ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w mechanizmie '''MediaWiki''', ta funkcja działa dla każdej linii w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Funkcja upraszcza zawartość tych linii (rozdziałów) do najprostrzej postaci, by w nim bie byłó znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. Znaczniki nowej linii i kreski poziomej, czy znaki nowej linii, są zastępowane spacją.
Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjcalne. Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim.
====== Zmiana tekstu krok 3 ======
Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, napisu wprowadzenia tekstu, których ich nazwy pasują do: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia, a szablony o nazwach z tabeli: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiana jest nowa linia wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według funkcji podanej w nagłówku, ale też w funkcji w tabeli transportu, na podstawie użycia funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
==== Kod dalszy bez wybranej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ====
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{LinkPatrz|czy_rozdzialy_analizowac}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcja inicjująca jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{Code|{{sr|#p.IterTekst|b=tak}}}}.
==== Kod wspólny ====
===== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} =====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie.
====== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ======
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy innych obiektów niż szablon, czy znacznik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. W innym rozgałezieniu tej instrukcji ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
====== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ======
Funkcja rozważa ogólnie linie z obietami {{Code|SZABLON}} albo {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy szablonów znaczników, czy normalnych ich, innych niż centrowania i nagłówków, ale nadal znaczników.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy nie okładek, zatrzymując się właśne na nich, rozwijąc pierwszą z koleii okładkę. Iterator iteruje po zawartości jakiegoś elementu, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
{{HNumer|1=
======= {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} =======
}}
Funkcja właściwa do rozwazania szczególnego z obiektami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} lub {{Code|1}}, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
====== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ======
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści. Funcja służy do rozważania nagłówków centrowanych szablonowo, czy znacznikowo, a nawet gdy zamiast tego mamy znacznik nagłówka.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami,
* {{Code|hn_number}} {{Patrz|hn_number}} - czy to jest zawartość szablonu centrowania.
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, czy w spisie są jakieś początkowe artykuły, które nie należą do żadnego rozdziału, tzw. artykuły wstępne. Dalej są sprawdzane, czy wprowadzony tekstjako pierwszy argument, czy jest nagłówkiem spisu treści rozdziału centrowanego, czy nagłówkowego.
{{HNumer|1=
======= {{Śródtytuł|Spis}}{{Code|Spis}} =======
}}
Jest to funkcja szczególna do rozwazania szablonów centrowania spisów treści.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest linku spisu treści, wtedy dla istniejącego wpisu w pierwszej wartości sprawdzanej dla artykułu książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}, odpowiednimi wartościami, i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
Przeciwnie w innym wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{LinkPatrz|hn_number}} i {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
W innym wypadku nie jest zwracana żadna wartość.
====== Kod dalszy funkcji ======
{{HNumer|1=
======= Warunki wstępne =======
}}
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
Gdy mamy włączoną opcję: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, wtedy możemy powiedzieć, ze również {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
{{Tab}}Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału, dodatniego, czy ujemnego, na początku otrzymanego spisu treści dla jego początkowych linii.
{{HNumer|1=
======= Iterator po rozważanej zmiennej, czyli iteracja po tekście =======
}}
Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest później uruchamiana iteracja, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
{{HNumer|1=
======== Obiekt szablonowy, czyli typu SZABLON ========
}}
W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, a gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość {{Code|true}}, czyli znalazł okłądkę, przeciwnie na {{Code|false}}, a tu już nie.
{{HNumer|1=
======== Obiekt znacznikowy, czyli typu ZNACZNIK ========
}}
A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, a gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, a potem z tym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
{{HNumer|1=
======== Obiekty linkowe, czyli typu: LINKW i LINKZ, a więc linki wewnętrzne i zewnętrzne ========
}}
Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano okładkę, przeciwnie na {{Code|false}}, a tu już nie, tak jak dla obiektu {{Code|SZABLON}}.
====== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ======
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}} jest {{Code|true}}, i gdy zmienna {{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}, jest bez wartości, wtedy dla {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst nie kończy się na {{Code|.}}, dla określonej linii nieporządnej linii. W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, przeciwnie ustawiana jest wartość: {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. A gdy {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu, i zwracana jest wartość pusta z drugim nienilowym argumentem, gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadkujuż nie.
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}
{{Tab}}Gdy {{LinkPatrz|podrecznik}} ma wartość {{Code|false}}, wtedy dla żadnej wartości {{LinkPatrz|wartosc}}, gdy zmienna: {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem jest ciąg znaków określone wzorem {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}}, jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, a jeśli jednak tak, to zmienna: {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, w innym rozgłazieniu instrukcji '''jeśli''' dla: {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
; Gdy zmienna {{Code|podrecznik}} nie przyjmuje żadnej wartości logicznej
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, wtedy dla {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, też jest zakańczana, w przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
====== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ======
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
====== Użytek wartości ze zmiennej {{Code|tak}} ======
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{LinkPatrz|tak}} jest równa wartości prawdziwej, to uruchamiana jest funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, przeciwnie bezparametrowo {{Code|funkcja2}} {{LinkPatrz|funkcja2}}.
==== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ====
Liczymy poszczególne linie z iteratora otrzymanego z {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych
Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
;; Rozdział dodatni
Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|poziom_rozdzialu}}.
Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{LinkPatrz|czy_rozdzialy_analizowac}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami,w innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą i trzecią, funkcją, który z parametru {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} usuwa jej wartość.
;;; Pierwsza anonimowa funkcja
{{Tab}}Tą pierwszą funkcją, jest tak gdy: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. Przeciwnie sprawdzamy wartość zmiennej {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. A gdy nie ma takiego rozdziału, to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na {{LinkPatrz|szablon_spis_tresci}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. A jeżeli {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
;;; Druga anonimowa funkcja
{{Tab}}Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
;; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe
Gdy nie udało się znaleźć {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
==== Wartości zwracane przez iterator ====
Gdy: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
Gdzie parametry wartości zwracanych:
* {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str}} w kodzie,
* {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
Gdy {{LinkPatrz|__FUNKCJA2}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2}} z parametrem identyfikującym, że to jest rozdział {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2ftfrnguwst63c2o9rb47mtgrbmeqlm
553960
553959
2026-09-02T11:11:08Z
Persino
2851
/* {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} */
553960
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalsze parametry o wartościami zwracanych przez nią są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa nowe zagnieżdzone linie w nowych liniach z szablonami i znacznikami centrowania, zastępując je odpowiednimi ich zawartościami, pozostawiając główną nową linię z szablonem lub znacznikiem centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu centrowania przy pomocy funkcji: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, nowe linie, nawet kresek, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, nowe linie powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany z drugą wartością {{Code|true}}, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikkowany: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, podany jako pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy przy pomocy tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, czy znacznikowy, którym jest: {{Tag|center}}, lub określone tabelą: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. W obu tych rozgałęzieniach funkcji jest uruchamiana procedura: {{LinkŚródtytuł|Modyfikacja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} {{Patrz|parametr1}} - to nic innego jak: {{Code|nazwa}} {{Patrz|nazwa}}, czyli jak nazwa znacznika,
** {{Code|parametr2}} {{Patrz|parametr2}} - to nic innego jak: {{Code|zawartość}} {{Patrz|zawartość}}, czyli zawartość znacznika,
** {{Code|parametr3}} {{Patrz|parametr3}} - to nic innego jak: {{Code|tab_atrybuty}} {{Patrz|tab_atrybuty}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się nie zmieniła, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
Funkcja jedynie działa w dwóch sprawdzanych zakresach, tzn. {{Code|SZABLON}} i {{Code|ZNACZNIK}}, w nich wywoływana jest funkcja {{LinkŚródtytuł|Modyfikacja}}, którego drugi element określa, czy coś się zmieniło, a pierwszą wartością jest ta wartość zmieniona, lub nie.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością, a ta nowa jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}}, to na poczatek tego czegoś nowego jest dodawany odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwie nowe linie, a na końcu jedna, i to jest zwracane, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną, lub nie, zawartość.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni {{LinkPatrz|czy_rozdział_dodatni}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię,
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni.
Funkcja wydziela poszczególne linie wewnętrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu {{Code|SZABLON}}, nowe linie: {{s|Br}}, nawet kreskowe: {{s|Hr}}, są zamieniane na spację. Szablony napisu wprowadzenia tekstu: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zamieniane na ich zawartości. A dla elementu {{Code|ZNACZNIK}}, czyli znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, są zamieniane na spację. A całe naczniki, tzn.: {{Tag|center}} i {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zamieniane na ich zawartości.
Dla znacznika: {{Tag|pre}}, czyli obiekt {{Code|PRE}}, gdy ona nie ma zawartości, to zamiast niego jest wyświetlana zawartość równą jednej spacji.
Dla specjalnego tagu {{Tag|nowiki}} mechanizmu MediaWiki znaki specjalne kodu zamieniane są na znaki kodu {{Strong|HTML}}, czyli według funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}. Gdy mamy rozdział dodatni według {{LinkPatrz|czy_rozdział_dodatni}}, wtedy znaki nowej linii {{Code|\n}} zawartości są zamieniane na znak jednej spacji. Podobnie robimy dla obiektu {{Code|ŻRÓDŁO}}.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu krok 1 ======
Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji w odpowiednie kody {{Strong|HTML}}, lub w edytować linki zewnętrzne {{Code|LINKZ}} bez nazwy, by napisać ich numerki uruchomień, aby była zachowana kolejność numerowania szablonów, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}}, która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w tym module.
{{HNumer|1=
======= Opis funkcji {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}, jako pierwszy argument modyfikujący tekst, w przypadku innym niż szablony i znaczniki referencji - nazwane i nienazwane, oraz numerujące linki zewnętrzne nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} - jak w: {{LinkPatrz|parametr1}}, jest to: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr2}} - jak w: {{LinkPatrz|parametr2}}, jest to: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr3}} - jak w: {{LinkPatrz|parametr3}}, jest to: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Gdy mamy {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, wtedy uruchamiamy funkcję:
{{HNumer|1=
======== {{Śródtytuł|FuncSzablon}}{{Code|FuncSzablon}} dla obiektów szablonowych, czyli typu SZABLON ========
}}
Funkcja zastępuje pewne elementy pewnym wyliczonym łańcuchem znaków, lub zwraca wartość {{Code|nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}.
{{HNumer|1=
========= Szablony sztucznego wprowadzenia tekstu =========
}}
Sprawdzamy, czy to jest jeden z szablonów z tabeli o nazwach kluczy z: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, na podstawie, której sprawdzamy, czy istnieje element tekstu, który jest bardzo ważny w analizie tych szablonów. A jeżeli ten parametr istnieje w zestawie parametrów, wtedy ustawiamy zmienną modykacji szablonu: {{Code|czy_modyfikacja}}, na wartość {{Code|false}}, aby było wiadomo, że modyfikacji w szablonie nie dokonano, jeżeli w nim nie znaleziono znaczników. Co potem uruchamiamy funkcję kompletowania tekstu wikikodu analizowanego szablonu: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, by wnętrze znacznika {{Tag|div}} zastąpić jej zawartością, wtedy i tylko wtedy, gdy funkcja: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, na podstawie analizy parametru: {{Code|tekst}}, zwróci wartość {{Code|true}}, a wtedy się nie dzieje, gdy w zawartości jest znak nowej linii, a przeciwnie w niej są rozdziały dodatnie, czy ujemne, wtedy na ten parametr są uruchamiane pewne funkcje, anulujące właściwości tych rozdziałów, i w takim razie jest ustawiany ten parametr modyfikacji na wartość prawdziwą, i wtedy kod tego szablonu jest zastąpiony odpowiednio zmodyfikowaną zawartością tego szablonu.
Po wyjściu z funkcji kompletowania jest sprawdzana zmienna modyfikacji: {{Code|czy_modyfikacja}}, czy przybiera wartość prawdziwą, a jeżeli tak, to zwracana jest wartość z tej funkcji na zewnątrz opisywanej.
{{HNumer|1=
========= {{Śródtytuł|AnalizaSzablonu}}{{Code|AnalizaSzablonu}} =========
}}
Uruchamiamy funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|b=tak}}}}, używając tabeli: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, do analizy szablonu podanej w parametrach szablonu, aby go zastąpić jego odpowiednią zawartością, a jeżeli ona zwróci jakiś nienilowy wynik, to ta funkcja przybiera tą wartość w postaci zwracanej, w innym wypadku jest sprawdzane, czy nazwa szablonu pasuje do jednych do kluczu z tabel: {{LinkPatrz|p.szablony_do_usuwania_z_tekstu}}, {{LinkPatrz|p.szablony_bez_generowania_napisowego}} i {{LinkPatrz|p.szablony_nie_typowo_linkowe}}. Jeżeli pasuje, to funkcja zwraca ciąg pusty, przeciwnie wartość {{Code|nil}}.
{{HNumer|1=
========= Parametry funkcji {{LinkŚródtytuł|AnalizaSzablonu}} =========
}}
Funkcja analizująca szablon pod pewnymi warunkami zamieniające pewne zawartości wywołań szablonów na wartości puste lub nie zwracające żadnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaSzablonu(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}.
Gdy funkcja {{LinkŚródtytuł|AnalizaSzablonu}}, zwróci wartość odpowiadających łańcuchowi znaków, wtedy opisywana funkcja nadrzędnna zwraca wartość pustą, to wtedy funkcja: {{LinkŚródtytuł|FuncSzablon}}, ma zwracaną wartość równą tej wartości, a jeżeli nie ma jej, to ona idzie dalej.
{{HNumer|1=
========= Modyfikacja napisów wprowadzenia tekstu szablonowych =========
}}
Uruchamiana jest funkcja {{LinkŚródtytuł|UsuwanieZnacznikowe}}, która zwraca dwie wartości {{Code|szablon}} i {{Code|czy_center}}.
{{HNumer|1=
========= Szablony generowania nagłówków - generowanie zawartości na podstawie pewnych wniosków =========
}}
{{Tab}}Jeżeli pierwszy parametr tej funkcji zwróci wartość nie {{Code|nil}}, wtedy wiadomo, że zawartość szablonu się zmieniła, wtedy sprawdzamy, czy wywołanie szablonowe, jest jednych ze znaczników: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli tak, to liczy jego zawartość, a jeśli ona istnieje, wtedy sprawdzamy, czy w niej jest rozdział dodatni, czy ujemny, a jeżeli jest, to funkcja zwraca tą zawartość z tabelą parametrów szablonu.
{{HNumer|1=
========== Aktualizacja bazy danych kodowania '''szablonowego''' zakodowanego wikikodu ==========
}}
Po wyjściu z tej funkcji jest sprawdzane, czy funkcja zwróci wartość odpowiadająca prawdziwej, jeżeli tak, to ona zwróci ten wynik, jeżeli nie, to aktualizowana jest pozycja z: {{Code|szablon}} {{Code|{{=}}}} {{Code|szablon}}, według:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
</syntaxhighlight>
A sama funkcja {{LinkŚródtytuł|FuncSzablon}} zakańcza się z wartością {{Code|nil}}.
{{HNumer|1=
========= Szablony generowania nagłówków - bez modyfikacji szablonów napisu wprowadzenia tekstu =========
}}
A gdy {{Code|szablon}} odpowiada wartości fałszywej, a {{Code|czy_center}} prawdziwej, wtedy szablon nie został zmodyfikowany, w takim razie sprawdzamy, czy nazwa szablonu pasuje do tej samej tabeli, co poprzednio dla prawdziwego {{Code|szablon}}, ale tutaj jest fałszywe, wtedy robimy podobne operacje, ale tym razem bez tabeli parametrów.
{{HNumer|1=
========= Szablony znaczników odpowiadające właściwym znacznikom '''HTML''' innym niż centrowania i nagłówków =========
}}
A gdy {{Code|szablon}} i {{Code|czy_center}} są równe odpowiadającej wartości fałszywej, wtedy sprawdzamy, czy szablon jest znacznikiem szablonowym z tabeli o pewnych kluczach: {{LinkPatrz|p.znaczniki_szablonowe}}. A jeżeli ma parametr z zawartością, to go przekształcamy szablonem {{LinkŚródtytuł|ZamienNaKody}}, by usunąc magiczność rozdziałów dpdatnich i ujemnych,jeżeli on znajduje się na samym poczatku, czy końcu zawartości.
Jeżeli funkcja jest tak zdfiniownana, tzn.: {{LinkŚródtytuł|FuncSzablon}}, jeżeli ma wynik odpowiadający prawdziwej wartości, wtedy jest zwracane {{Code|wynik,nil,true}} - co tutaj odpowiada zastępowaniom wartości, przeciwnie {{Code|nil,true}}, co tutaj odpowiada nierozwijaniu tej wartości.
{{HNumer|1=
======== Dalszy opis funkcji - obiekty nieszablonowe, czyli typu ZNACZNIK i inne ========
}}
{{Tab}}Dla {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}}, gdy nazwa znacznika nie jest {{Tag|center}} lub znacznikem wprowadzenia tekstu z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wtedy gdy jest nierówny: {{Tag|ref}}, {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, zatem definiujemy funkcją {{Code|fun}}, która zwracamy w postaci parametrów, do funkcji jako w zestawie argumentów zrzuconych: {{Code|fun,nil,true}}.
{{HNumer|1=
========= Znaczniki inne niż {{Tag|div}} =========
}}
Funkcja {{Code|fun}} ma definicję, która nie przyjmuje żadnych parametrów. W tej funkcji, gdy znacznik nie jest równy {{Tag|div}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a potem na jej wyniku {{LinkŚródtytuł|ZamienNaKody}}, a jeżeli zawartość nie istnieje, to ona zwróci wynik równy ciągowi pustemu.
{{HNumer|1=
========= Znaczniki warstw {{Tag|div}} =========
}}
A gdy jest jednak tym znacznikiem, to wtedy używamy funkcji dla parametru {{Code|tekst}}, czyli dla elementu wywołania szablonowego, gdy nie ma w nim rozdziałów dodatnich, czy ujemnych, czy są znaki nowej linii, wtedy przetwarzamy jego wynik, używając funkcji zastępowania {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przetwarzając i modyfikując odpowiednio niepustą i istniejącą jego zawartość, co następnie go zwracając. Dla innej jego zawartości jest zwracany ciag pusty.
{{HNumer|1=
========= Inne znaczniki niż rozważane wcześniej jako podstawa =========
}}
{{Tab}}Gdy znacznik nie jest tym, co myślimy, wtedy jest sprawdzana zawartość, czy istnieją w nim rozdziały dodatnie lub ujemne, to zwracany jest wynik taki symbolizujący według dokumentacji zastąpienie znacznika jego zawartością.
{{HNumer|1=
========= Znaczniki zostały zmodyfikowane przez funkcję obrabające znaczniki do jednej linii =========
}}
{{Tab}}Jeżeli funkcja nie przeszła dalszych etapów, to sprawdzany jest wynik funkcją {{LinkŚródtytuł|UsuwanieZnacznikowe}}, do modsyfikacji szablonowej i znacznikowej, jeżeli ma wartość równą odpowiadającej prawdziwej, wtedy w tabeli bazy kodów {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} dla tego obiektu i kodu jest naprawiana jego treść według tego wyniku uzyskanego z tej ostatniej funkcji.
{{Tab}}Dalej rzucany jest wynik nierozwijania, jeśli funkcja doszła do tego etapu.
{{HNumer|1=
======== Inne znaczniki specjalne mechanizmu MediaWiki oraz linki zewnętrzne i wewnętrzne ========
}}
Gdy obiekt jest równy {{Code|INNEPRE}} i zawartość składa się jego z samych odstępów, wtedy on jest zastępowany ciągiem pustym. Przeciwnie jest zrzucany wynik nierozwijania tego elementu.
{{HNumer|1=
========= Obiekty linków zewnętrznych i wewnętrznych =========
}}
Gdy mamy obiekt równy: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|b=tak}}}}, opisaną wcześniej, w nim znaczniki są zamieniane na ich zawartość, a jeżeli w nim tego nie ma, to nic nie jest robione.
Gdy dało się wtedy zaktualizować zmienną: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, to wtedy zmieniamy zawartość dla tego obiektu i kodu w tabeli bazy kodowania: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, na tą zawartość.
Sprawdzamy, czy ten link symbolizuje element spisu, którą sprawdzamy według funkcji: {{Code|{{sr|#p.CzyElementSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli nie, to funkcja zwraca wartość pustą, którą jest zastępowany taki link.
{{HNumer|1=
======== Wikitabele jako obiekty kodowania szablonowego, czyli elementy typu WIKITABELA ========
}}
Gdy obiekt jest o wartości {{Code|WIKITABELA}}, to wtedy wykorzystujemy zestaw funkcji: {{LzLua|mw.ustring.gsub}} i {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, aby przetworzyć tekst z tabelką, do zwykłych odnośników z linkami z wikitabeli, na przykład. Na samym końcu funkcja zwraca wynik do zastąpienia takiej wikitabeli pewnym ciągiem w odpowiedni udokomentowany sposób.
====== Zmiana tekstu krok 2 ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w mechanizmie '''MediaWiki''', ta funkcja działa dla każdej linii w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Funkcja upraszcza zawartość tych linii (rozdziałów) do najprostrzej postaci, by w nim bie byłó znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. Znaczniki nowej linii i kreski poziomej, czy znaki nowej linii, są zastępowane spacją.
Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjcalne. Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim.
====== Zmiana tekstu krok 3 ======
Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, napisu wprowadzenia tekstu, których ich nazwy pasują do: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia, a szablony o nazwach z tabeli: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiana jest nowa linia wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według funkcji podanej w nagłówku, ale też w funkcji w tabeli transportu, na podstawie użycia funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
==== Kod dalszy bez wybranej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ====
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{LinkPatrz|czy_rozdzialy_analizowac}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcja inicjująca jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{Code|{{sr|#p.IterTekst|b=tak}}}}.
==== Kod wspólny ====
===== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} =====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie.
====== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ======
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy innych obiektów niż szablon, czy znacznik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. W innym rozgałezieniu tej instrukcji ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
====== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ======
Funkcja rozważa ogólnie linie z obietami {{Code|SZABLON}} albo {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy szablonów znaczników, czy normalnych ich, innych niż centrowania i nagłówków, ale nadal znaczników.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy nie okładek, zatrzymując się właśne na nich, rozwijąc pierwszą z koleii okładkę. Iterator iteruje po zawartości jakiegoś elementu, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
{{HNumer|1=
======= {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} =======
}}
Funkcja właściwa do rozwazania szczególnego z obiektami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} lub {{Code|1}}, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
====== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ======
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści. Funcja służy do rozważania nagłówków centrowanych szablonowo, czy znacznikowo, a nawet gdy zamiast tego mamy znacznik nagłówka.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami,
* {{Code|hn_number}} {{Patrz|hn_number}} - czy to jest zawartość szablonu centrowania.
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, czy w spisie są jakieś początkowe artykuły, które nie należą do żadnego rozdziału, tzw. artykuły wstępne. Dalej są sprawdzane, czy wprowadzony tekstjako pierwszy argument, czy jest nagłówkiem spisu treści rozdziału centrowanego, czy nagłówkowego.
{{HNumer|1=
======= {{Śródtytuł|Spis}}{{Code|Spis}} =======
}}
Jest to funkcja szczególna do rozwazania szablonów centrowania spisów treści.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest linku spisu treści, wtedy dla istniejącego wpisu w pierwszej wartości sprawdzanej dla artykułu książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}, odpowiednimi wartościami, i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
Przeciwnie w innym wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{LinkPatrz|hn_number}} i {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
W innym wypadku nie jest zwracana żadna wartość.
====== Kod dalszy funkcji ======
{{HNumer|1=
======= Warunki wstępne =======
}}
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
Gdy mamy włączoną opcję: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, wtedy możemy powiedzieć, ze również {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
{{Tab}}Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału, dodatniego, czy ujemnego, na początku otrzymanego spisu treści dla jego początkowych linii.
{{HNumer|1=
======= Iterator po rozważanej zmiennej, czyli iteracja po tekście =======
}}
Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest później uruchamiana iteracja, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
{{HNumer|1=
======== Obiekt szablonowy, czyli typu SZABLON ========
}}
W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, a gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość {{Code|true}}, czyli znalazł okłądkę, przeciwnie na {{Code|false}}, a tu już nie.
{{HNumer|1=
======== Obiekt znacznikowy, czyli typu ZNACZNIK ========
}}
A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, a gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, a potem z tym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
{{HNumer|1=
======== Obiekty linkowe, czyli typu: LINKW i LINKZ, a więc linki wewnętrzne i zewnętrzne ========
}}
Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano okładkę, przeciwnie na {{Code|false}}, a tu już nie, tak jak dla obiektu {{Code|SZABLON}}.
====== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ======
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}} jest {{Code|true}}, i gdy zmienna {{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}, jest bez wartości, wtedy dla {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst nie kończy się na {{Code|.}}, dla określonej linii nieporządnej linii. W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, przeciwnie ustawiana jest wartość: {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. A gdy {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu, i zwracana jest wartość pusta z drugim nienilowym argumentem, gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadkujuż nie.
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}
{{Tab}}Gdy {{LinkPatrz|podrecznik}} ma wartość {{Code|false}}, wtedy dla żadnej wartości {{LinkPatrz|wartosc}}, gdy zmienna: {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem jest ciąg znaków określone wzorem {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}}, jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, a jeśli jednak tak, to zmienna: {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, w innym rozgłazieniu instrukcji '''jeśli''' dla: {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
; Gdy zmienna {{Code|podrecznik}} nie przyjmuje żadnej wartości logicznej
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, wtedy dla {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, też jest zakańczana, w przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
====== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ======
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
====== Użytek wartości ze zmiennej {{Code|tak}} ======
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{LinkPatrz|tak}} jest równa wartości prawdziwej, to uruchamiana jest funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, przeciwnie bezparametrowo {{Code|funkcja2}} {{LinkPatrz|funkcja2}}.
==== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ====
Liczymy poszczególne linie z iteratora otrzymanego z {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych
Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
;; Rozdział dodatni
Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|poziom_rozdzialu}}.
Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{LinkPatrz|czy_rozdzialy_analizowac}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami,w innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą i trzecią, funkcją, który z parametru {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} usuwa jej wartość.
;;; Pierwsza anonimowa funkcja
{{Tab}}Tą pierwszą funkcją, jest tak gdy: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. Przeciwnie sprawdzamy wartość zmiennej {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. A gdy nie ma takiego rozdziału, to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na {{LinkPatrz|szablon_spis_tresci}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. A jeżeli {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
;;; Druga anonimowa funkcja
{{Tab}}Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
;; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe
Gdy nie udało się znaleźć {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
==== Wartości zwracane przez iterator ====
Gdy: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
Gdzie parametry wartości zwracanych:
* {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str}} w kodzie,
* {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
Gdy {{LinkPatrz|__FUNKCJA2}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2}} z parametrem identyfikującym, że to jest rozdział {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sjfy17s93cesyx3qev6vntr87xp1l65
553961
553960
2026-09-02T11:27:48Z
Persino
2851
/* {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} */
553961
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalsze parametry o wartościami zwracanych przez nią są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa nowe zagnieżdzone linie w nowych liniach z '''szablonami centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, oraz '''znacznikami centrowania''': {{Tag|center}}, i '''nagłówków''': {{ZobaczTeż|nagłówki}} {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, w linii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu centrowania przy pomocy funkcji: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, nowe linie, nawet kresek, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, nowe linie powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany z drugą wartością {{Code|true}}, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikkowany: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, podany jako pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy przy pomocy tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, czy znacznikowy, którym jest: {{Tag|center}}, lub określone tabelą: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. W obu tych rozgałęzieniach funkcji jest uruchamiana procedura: {{LinkŚródtytuł|Modyfikacja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} {{Patrz|parametr1}} - to nic innego jak: {{Code|nazwa}} {{Patrz|nazwa}}, czyli jak nazwa znacznika,
** {{Code|parametr2}} {{Patrz|parametr2}} - to nic innego jak: {{Code|zawartość}} {{Patrz|zawartość}}, czyli zawartość znacznika,
** {{Code|parametr3}} {{Patrz|parametr3}} - to nic innego jak: {{Code|tab_atrybuty}} {{Patrz|tab_atrybuty}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się nie zmieniła, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
Funkcja jedynie działa w dwóch sprawdzanych zakresach, tzn. {{Code|SZABLON}} i {{Code|ZNACZNIK}}, w nich wywoływana jest funkcja {{LinkŚródtytuł|Modyfikacja}}, którego drugi element określa, czy coś się zmieniło, a pierwszą wartością jest ta wartość zmieniona, lub nie.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością, a ta nowa jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}}, to na poczatek tego czegoś nowego jest dodawany odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwie nowe linie, a na końcu jedna, i to jest zwracane, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną, lub nie, zawartość.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni {{LinkPatrz|czy_rozdział_dodatni}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię,
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni.
Funkcja wydziela poszczególne linie wewnętrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu {{Code|SZABLON}}, nowe linie: {{s|Br}}, nawet kreskowe: {{s|Hr}}, są zamieniane na spację. Szablony napisu wprowadzenia tekstu: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zamieniane na ich zawartości. A dla elementu {{Code|ZNACZNIK}}, czyli znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, są zamieniane na spację. A całe naczniki, tzn.: {{Tag|center}} i {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zamieniane na ich zawartości.
Dla znacznika: {{Tag|pre}}, czyli obiekt {{Code|PRE}}, gdy ona nie ma zawartości, to zamiast niego jest wyświetlana zawartość równą jednej spacji.
Dla specjalnego tagu {{Tag|nowiki}} mechanizmu MediaWiki znaki specjalne kodu zamieniane są na znaki kodu {{Strong|HTML}}, czyli według funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}. Gdy mamy rozdział dodatni według {{LinkPatrz|czy_rozdział_dodatni}}, wtedy znaki nowej linii {{Code|\n}} zawartości są zamieniane na znak jednej spacji. Podobnie robimy dla obiektu {{Code|ŻRÓDŁO}}.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu krok 1 ======
Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji w odpowiednie kody {{Strong|HTML}}, lub w edytować linki zewnętrzne {{Code|LINKZ}} bez nazwy, by napisać ich numerki uruchomień, aby była zachowana kolejność numerowania szablonów, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}}, która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w tym module.
{{HNumer|1=
======= Opis funkcji {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}, jako pierwszy argument modyfikujący tekst, w przypadku innym niż szablony i znaczniki referencji - nazwane i nienazwane, oraz numerujące linki zewnętrzne nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} - jak w: {{LinkPatrz|parametr1}}, jest to: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr2}} - jak w: {{LinkPatrz|parametr2}}, jest to: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr3}} - jak w: {{LinkPatrz|parametr3}}, jest to: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Gdy mamy {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, wtedy uruchamiamy funkcję:
{{HNumer|1=
======== {{Śródtytuł|FuncSzablon}}{{Code|FuncSzablon}} dla obiektów szablonowych, czyli typu SZABLON ========
}}
Funkcja zastępuje pewne elementy pewnym wyliczonym łańcuchem znaków, lub zwraca wartość {{Code|nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}.
{{HNumer|1=
========= Szablony sztucznego wprowadzenia tekstu =========
}}
Sprawdzamy, czy to jest jeden z szablonów z tabeli o nazwach kluczy z: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, na podstawie, której sprawdzamy, czy istnieje element tekstu, który jest bardzo ważny w analizie tych szablonów. A jeżeli ten parametr istnieje w zestawie parametrów, wtedy ustawiamy zmienną modykacji szablonu: {{Code|czy_modyfikacja}}, na wartość {{Code|false}}, aby było wiadomo, że modyfikacji w szablonie nie dokonano, jeżeli w nim nie znaleziono znaczników. Co potem uruchamiamy funkcję kompletowania tekstu wikikodu analizowanego szablonu: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, by wnętrze znacznika {{Tag|div}} zastąpić jej zawartością, wtedy i tylko wtedy, gdy funkcja: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, na podstawie analizy parametru: {{Code|tekst}}, zwróci wartość {{Code|true}}, a wtedy się nie dzieje, gdy w zawartości jest znak nowej linii, a przeciwnie w niej są rozdziały dodatnie, czy ujemne, wtedy na ten parametr są uruchamiane pewne funkcje, anulujące właściwości tych rozdziałów, i w takim razie jest ustawiany ten parametr modyfikacji na wartość prawdziwą, i wtedy kod tego szablonu jest zastąpiony odpowiednio zmodyfikowaną zawartością tego szablonu.
Po wyjściu z funkcji kompletowania jest sprawdzana zmienna modyfikacji: {{Code|czy_modyfikacja}}, czy przybiera wartość prawdziwą, a jeżeli tak, to zwracana jest wartość z tej funkcji na zewnątrz opisywanej.
{{HNumer|1=
========= {{Śródtytuł|AnalizaSzablonu}}{{Code|AnalizaSzablonu}} =========
}}
Uruchamiamy funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|b=tak}}}}, używając tabeli: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, do analizy szablonu podanej w parametrach szablonu, aby go zastąpić jego odpowiednią zawartością, a jeżeli ona zwróci jakiś nienilowy wynik, to ta funkcja przybiera tą wartość w postaci zwracanej, w innym wypadku jest sprawdzane, czy nazwa szablonu pasuje do jednych do kluczu z tabel: {{LinkPatrz|p.szablony_do_usuwania_z_tekstu}}, {{LinkPatrz|p.szablony_bez_generowania_napisowego}} i {{LinkPatrz|p.szablony_nie_typowo_linkowe}}. Jeżeli pasuje, to funkcja zwraca ciąg pusty, przeciwnie wartość {{Code|nil}}.
{{HNumer|1=
========= Parametry funkcji {{LinkŚródtytuł|AnalizaSzablonu}} =========
}}
Funkcja analizująca szablon pod pewnymi warunkami zamieniające pewne zawartości wywołań szablonów na wartości puste lub nie zwracające żadnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaSzablonu(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}.
Gdy funkcja {{LinkŚródtytuł|AnalizaSzablonu}}, zwróci wartość odpowiadających łańcuchowi znaków, wtedy opisywana funkcja nadrzędnna zwraca wartość pustą, to wtedy funkcja: {{LinkŚródtytuł|FuncSzablon}}, ma zwracaną wartość równą tej wartości, a jeżeli nie ma jej, to ona idzie dalej.
{{HNumer|1=
========= Modyfikacja napisów wprowadzenia tekstu szablonowych =========
}}
Uruchamiana jest funkcja {{LinkŚródtytuł|UsuwanieZnacznikowe}}, która zwraca dwie wartości {{Code|szablon}} i {{Code|czy_center}}.
{{HNumer|1=
========= Szablony generowania nagłówków - generowanie zawartości na podstawie pewnych wniosków =========
}}
{{Tab}}Jeżeli pierwszy parametr tej funkcji zwróci wartość nie {{Code|nil}}, wtedy wiadomo, że zawartość szablonu się zmieniła, wtedy sprawdzamy, czy wywołanie szablonowe, jest jednych ze znaczników: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli tak, to liczy jego zawartość, a jeśli ona istnieje, wtedy sprawdzamy, czy w niej jest rozdział dodatni, czy ujemny, a jeżeli jest, to funkcja zwraca tą zawartość z tabelą parametrów szablonu.
{{HNumer|1=
========== Aktualizacja bazy danych kodowania '''szablonowego''' zakodowanego wikikodu ==========
}}
Po wyjściu z tej funkcji jest sprawdzane, czy funkcja zwróci wartość odpowiadająca prawdziwej, jeżeli tak, to ona zwróci ten wynik, jeżeli nie, to aktualizowana jest pozycja z: {{Code|szablon}} {{Code|{{=}}}} {{Code|szablon}}, według:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
</syntaxhighlight>
A sama funkcja {{LinkŚródtytuł|FuncSzablon}} zakańcza się z wartością {{Code|nil}}.
{{HNumer|1=
========= Szablony generowania nagłówków - bez modyfikacji szablonów napisu wprowadzenia tekstu =========
}}
A gdy {{Code|szablon}} odpowiada wartości fałszywej, a {{Code|czy_center}} prawdziwej, wtedy szablon nie został zmodyfikowany, w takim razie sprawdzamy, czy nazwa szablonu pasuje do tej samej tabeli, co poprzednio dla prawdziwego {{Code|szablon}}, ale tutaj jest fałszywe, wtedy robimy podobne operacje, ale tym razem bez tabeli parametrów.
{{HNumer|1=
========= Szablony znaczników odpowiadające właściwym znacznikom '''HTML''' innym niż centrowania i nagłówków =========
}}
A gdy {{Code|szablon}} i {{Code|czy_center}} są równe odpowiadającej wartości fałszywej, wtedy sprawdzamy, czy szablon jest znacznikiem szablonowym z tabeli o pewnych kluczach: {{LinkPatrz|p.znaczniki_szablonowe}}. A jeżeli ma parametr z zawartością, to go przekształcamy szablonem {{LinkŚródtytuł|ZamienNaKody}}, by usunąc magiczność rozdziałów dpdatnich i ujemnych,jeżeli on znajduje się na samym poczatku, czy końcu zawartości.
Jeżeli funkcja jest tak zdfiniownana, tzn.: {{LinkŚródtytuł|FuncSzablon}}, jeżeli ma wynik odpowiadający prawdziwej wartości, wtedy jest zwracane {{Code|wynik,nil,true}} - co tutaj odpowiada zastępowaniom wartości, przeciwnie {{Code|nil,true}}, co tutaj odpowiada nierozwijaniu tej wartości.
{{HNumer|1=
======== Dalszy opis funkcji - obiekty nieszablonowe, czyli typu ZNACZNIK i inne ========
}}
{{Tab}}Dla {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}}, gdy nazwa znacznika nie jest {{Tag|center}} lub znacznikem wprowadzenia tekstu z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wtedy gdy jest nierówny: {{Tag|ref}}, {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, zatem definiujemy funkcją {{Code|fun}}, która zwracamy w postaci parametrów, do funkcji jako w zestawie argumentów zrzuconych: {{Code|fun,nil,true}}.
{{HNumer|1=
========= Znaczniki inne niż {{Tag|div}} =========
}}
Funkcja {{Code|fun}} ma definicję, która nie przyjmuje żadnych parametrów. W tej funkcji, gdy znacznik nie jest równy {{Tag|div}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a potem na jej wyniku {{LinkŚródtytuł|ZamienNaKody}}, a jeżeli zawartość nie istnieje, to ona zwróci wynik równy ciągowi pustemu.
{{HNumer|1=
========= Znaczniki warstw {{Tag|div}} =========
}}
A gdy jest jednak tym znacznikiem, to wtedy używamy funkcji dla parametru {{Code|tekst}}, czyli dla elementu wywołania szablonowego, gdy nie ma w nim rozdziałów dodatnich, czy ujemnych, czy są znaki nowej linii, wtedy przetwarzamy jego wynik, używając funkcji zastępowania {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przetwarzając i modyfikując odpowiednio niepustą i istniejącą jego zawartość, co następnie go zwracając. Dla innej jego zawartości jest zwracany ciag pusty.
{{HNumer|1=
========= Inne znaczniki niż rozważane wcześniej jako podstawa =========
}}
{{Tab}}Gdy znacznik nie jest tym, co myślimy, wtedy jest sprawdzana zawartość, czy istnieją w nim rozdziały dodatnie lub ujemne, to zwracany jest wynik taki symbolizujący według dokumentacji zastąpienie znacznika jego zawartością.
{{HNumer|1=
========= Znaczniki zostały zmodyfikowane przez funkcję obrabające znaczniki do jednej linii =========
}}
{{Tab}}Jeżeli funkcja nie przeszła dalszych etapów, to sprawdzany jest wynik funkcją {{LinkŚródtytuł|UsuwanieZnacznikowe}}, do modsyfikacji szablonowej i znacznikowej, jeżeli ma wartość równą odpowiadającej prawdziwej, wtedy w tabeli bazy kodów {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} dla tego obiektu i kodu jest naprawiana jego treść według tego wyniku uzyskanego z tej ostatniej funkcji.
{{Tab}}Dalej rzucany jest wynik nierozwijania, jeśli funkcja doszła do tego etapu.
{{HNumer|1=
======== Inne znaczniki specjalne mechanizmu MediaWiki oraz linki zewnętrzne i wewnętrzne ========
}}
Gdy obiekt jest równy {{Code|INNEPRE}} i zawartość składa się jego z samych odstępów, wtedy on jest zastępowany ciągiem pustym. Przeciwnie jest zrzucany wynik nierozwijania tego elementu.
{{HNumer|1=
========= Obiekty linków zewnętrznych i wewnętrznych =========
}}
Gdy mamy obiekt równy: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|b=tak}}}}, opisaną wcześniej, w nim znaczniki są zamieniane na ich zawartość, a jeżeli w nim tego nie ma, to nic nie jest robione.
Gdy dało się wtedy zaktualizować zmienną: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, to wtedy zmieniamy zawartość dla tego obiektu i kodu w tabeli bazy kodowania: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, na tą zawartość.
Sprawdzamy, czy ten link symbolizuje element spisu, którą sprawdzamy według funkcji: {{Code|{{sr|#p.CzyElementSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli nie, to funkcja zwraca wartość pustą, którą jest zastępowany taki link.
{{HNumer|1=
======== Wikitabele jako obiekty kodowania szablonowego, czyli elementy typu WIKITABELA ========
}}
Gdy obiekt jest o wartości {{Code|WIKITABELA}}, to wtedy wykorzystujemy zestaw funkcji: {{LzLua|mw.ustring.gsub}} i {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, aby przetworzyć tekst z tabelką, do zwykłych odnośników z linkami z wikitabeli, na przykład. Na samym końcu funkcja zwraca wynik do zastąpienia takiej wikitabeli pewnym ciągiem w odpowiedni udokomentowany sposób.
====== Zmiana tekstu krok 2 ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w mechanizmie '''MediaWiki''', ta funkcja działa dla każdej linii w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Funkcja upraszcza zawartość tych linii (rozdziałów) do najprostrzej postaci, by w nim bie byłó znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. Znaczniki nowej linii i kreski poziomej, czy znaki nowej linii, są zastępowane spacją.
Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjcalne. Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim.
====== Zmiana tekstu krok 3 ======
Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, napisu wprowadzenia tekstu, których ich nazwy pasują do: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia, a szablony o nazwach z tabeli: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiana jest nowa linia wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według funkcji podanej w nagłówku, ale też w funkcji w tabeli transportu, na podstawie użycia funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
==== Kod dalszy bez wybranej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ====
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{LinkPatrz|czy_rozdzialy_analizowac}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcja inicjująca jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{Code|{{sr|#p.IterTekst|b=tak}}}}.
==== Kod wspólny ====
===== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} =====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie.
====== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ======
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy innych obiektów niż szablon, czy znacznik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. W innym rozgałezieniu tej instrukcji ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
====== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ======
Funkcja rozważa ogólnie linie z obietami {{Code|SZABLON}} albo {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy szablonów znaczników, czy normalnych ich, innych niż centrowania i nagłówków, ale nadal znaczników.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy nie okładek, zatrzymując się właśne na nich, rozwijąc pierwszą z koleii okładkę. Iterator iteruje po zawartości jakiegoś elementu, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
{{HNumer|1=
======= {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} =======
}}
Funkcja właściwa do rozwazania szczególnego z obiektami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} lub {{Code|1}}, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
====== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ======
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści. Funcja służy do rozważania nagłówków centrowanych szablonowo, czy znacznikowo, a nawet gdy zamiast tego mamy znacznik nagłówka.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami,
* {{Code|hn_number}} {{Patrz|hn_number}} - czy to jest zawartość szablonu centrowania.
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, czy w spisie są jakieś początkowe artykuły, które nie należą do żadnego rozdziału, tzw. artykuły wstępne. Dalej są sprawdzane, czy wprowadzony tekstjako pierwszy argument, czy jest nagłówkiem spisu treści rozdziału centrowanego, czy nagłówkowego.
{{HNumer|1=
======= {{Śródtytuł|Spis}}{{Code|Spis}} =======
}}
Jest to funkcja szczególna do rozwazania szablonów centrowania spisów treści.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest linku spisu treści, wtedy dla istniejącego wpisu w pierwszej wartości sprawdzanej dla artykułu książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}, odpowiednimi wartościami, i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
Przeciwnie w innym wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{LinkPatrz|hn_number}} i {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
W innym wypadku nie jest zwracana żadna wartość.
====== Kod dalszy funkcji ======
{{HNumer|1=
======= Warunki wstępne =======
}}
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
Gdy mamy włączoną opcję: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, wtedy możemy powiedzieć, ze również {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
{{Tab}}Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału, dodatniego, czy ujemnego, na początku otrzymanego spisu treści dla jego początkowych linii.
{{HNumer|1=
======= Iterator po rozważanej zmiennej, czyli iteracja po tekście =======
}}
Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest później uruchamiana iteracja, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
{{HNumer|1=
======== Obiekt szablonowy, czyli typu SZABLON ========
}}
W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, a gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość {{Code|true}}, czyli znalazł okłądkę, przeciwnie na {{Code|false}}, a tu już nie.
{{HNumer|1=
======== Obiekt znacznikowy, czyli typu ZNACZNIK ========
}}
A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, a gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, a potem z tym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
{{HNumer|1=
======== Obiekty linkowe, czyli typu: LINKW i LINKZ, a więc linki wewnętrzne i zewnętrzne ========
}}
Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano okładkę, przeciwnie na {{Code|false}}, a tu już nie, tak jak dla obiektu {{Code|SZABLON}}.
====== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ======
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}} jest {{Code|true}}, i gdy zmienna {{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}, jest bez wartości, wtedy dla {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst nie kończy się na {{Code|.}}, dla określonej linii nieporządnej linii. W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, przeciwnie ustawiana jest wartość: {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. A gdy {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu, i zwracana jest wartość pusta z drugim nienilowym argumentem, gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadkujuż nie.
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}
{{Tab}}Gdy {{LinkPatrz|podrecznik}} ma wartość {{Code|false}}, wtedy dla żadnej wartości {{LinkPatrz|wartosc}}, gdy zmienna: {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem jest ciąg znaków określone wzorem {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}}, jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, a jeśli jednak tak, to zmienna: {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, w innym rozgłazieniu instrukcji '''jeśli''' dla: {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
; Gdy zmienna {{Code|podrecznik}} nie przyjmuje żadnej wartości logicznej
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, wtedy dla {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, też jest zakańczana, w przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
====== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ======
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
====== Użytek wartości ze zmiennej {{Code|tak}} ======
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{LinkPatrz|tak}} jest równa wartości prawdziwej, to uruchamiana jest funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, przeciwnie bezparametrowo {{Code|funkcja2}} {{LinkPatrz|funkcja2}}.
==== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ====
Liczymy poszczególne linie z iteratora otrzymanego z {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych
Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
;; Rozdział dodatni
Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|poziom_rozdzialu}}.
Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{LinkPatrz|czy_rozdzialy_analizowac}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami,w innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą i trzecią, funkcją, który z parametru {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} usuwa jej wartość.
;;; Pierwsza anonimowa funkcja
{{Tab}}Tą pierwszą funkcją, jest tak gdy: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. Przeciwnie sprawdzamy wartość zmiennej {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. A gdy nie ma takiego rozdziału, to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na {{LinkPatrz|szablon_spis_tresci}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. A jeżeli {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
;;; Druga anonimowa funkcja
{{Tab}}Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
;; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe
Gdy nie udało się znaleźć {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
==== Wartości zwracane przez iterator ====
Gdy: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
Gdzie parametry wartości zwracanych:
* {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str}} w kodzie,
* {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
Gdy {{LinkPatrz|__FUNKCJA2}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2}} z parametrem identyfikującym, że to jest rozdział {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
brovtptiax7p3lncsbzz2co6nngq2mx
553962
553961
2026-09-02T11:49:31Z
Persino
2851
/* Definicje potrzebnych funkcji do opisu działającego kodu */
553962
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalsze parametry o wartościami zwracanych przez nią są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu centrowania przy pomocy funkcji: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, nowe linie, nawet kresek, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, nowe linie powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany z drugą wartością {{Code|true}}, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikkowany: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, podany jako pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy przy pomocy tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, czy znacznikowy, którym jest: {{Tag|center}}, lub określone tabelą: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. W obu tych rozgałęzieniach funkcji jest uruchamiana procedura: {{LinkŚródtytuł|Modyfikacja}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} {{Patrz|parametr1}} - to nic innego jak: {{Code|nazwa}} {{Patrz|nazwa}}, czyli jak nazwa znacznika,
** {{Code|parametr2}} {{Patrz|parametr2}} - to nic innego jak: {{Code|zawartość}} {{Patrz|zawartość}}, czyli zawartość znacznika,
** {{Code|parametr3}} {{Patrz|parametr3}} - to nic innego jak: {{Code|tab_atrybuty}} {{Patrz|tab_atrybuty}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się nie zmieniła, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
Funkcja jedynie działa w dwóch sprawdzanych zakresach, tzn. {{Code|SZABLON}} i {{Code|ZNACZNIK}}, w nich wywoływana jest funkcja {{LinkŚródtytuł|Modyfikacja}}, którego drugi element określa, czy coś się zmieniło, a pierwszą wartością jest ta wartość zmieniona, lub nie.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością, a ta nowa jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}}, to na poczatek tego czegoś nowego jest dodawany odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwie nowe linie, a na końcu jedna, i to jest zwracane, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną, lub nie, zawartość.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni {{LinkPatrz|czy_rozdział_dodatni}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię,
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni.
Funkcja wydziela poszczególne linie wewnętrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu {{Code|SZABLON}}, nowe linie: {{s|Br}}, nawet kreskowe: {{s|Hr}}, są zamieniane na spację. Szablony napisu wprowadzenia tekstu: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zamieniane na ich zawartości. A dla elementu {{Code|ZNACZNIK}}, czyli znaczniki: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, są zamieniane na spację. A całe naczniki, tzn.: {{Tag|center}} i {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zamieniane na ich zawartości.
Dla znacznika: {{Tag|pre}}, czyli obiekt {{Code|PRE}}, gdy ona nie ma zawartości, to zamiast niego jest wyświetlana zawartość równą jednej spacji.
Dla specjalnego tagu {{Tag|nowiki}} mechanizmu MediaWiki znaki specjalne kodu zamieniane są na znaki kodu {{Strong|HTML}}, czyli według funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}. Gdy mamy rozdział dodatni według {{LinkPatrz|czy_rozdział_dodatni}}, wtedy znaki nowej linii {{Code|\n}} zawartości są zamieniane na znak jednej spacji. Podobnie robimy dla obiektu {{Code|ŻRÓDŁO}}.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu krok 1 ======
Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji w odpowiednie kody {{Strong|HTML}}, lub w edytować linki zewnętrzne {{Code|LINKZ}} bez nazwy, by napisać ich numerki uruchomień, aby była zachowana kolejność numerowania szablonów, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}}, która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w tym module.
{{HNumer|1=
======= Opis funkcji {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}, jako pierwszy argument modyfikujący tekst, w przypadku innym niż szablony i znaczniki referencji - nazwane i nienazwane, oraz numerujące linki zewnętrzne nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}},
* Parametry znacznikowe:
** {{Code|parametr1}} - jak w: {{LinkPatrz|parametr1}}, jest to: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr2}} - jak w: {{LinkPatrz|parametr2}}, jest to: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
** {{Code|parametr3}} - jak w: {{LinkPatrz|parametr3}}, jest to: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Gdy mamy {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, wtedy uruchamiamy funkcję:
{{HNumer|1=
======== {{Śródtytuł|FuncSzablon}}{{Code|FuncSzablon}} dla obiektów szablonowych, czyli typu SZABLON ========
}}
Funkcja zastępuje pewne elementy pewnym wyliczonym łańcuchem znaków, lub zwraca wartość {{Code|nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}.
{{HNumer|1=
========= Szablony sztucznego wprowadzenia tekstu =========
}}
Sprawdzamy, czy to jest jeden z szablonów z tabeli o nazwach kluczy z: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, na podstawie, której sprawdzamy, czy istnieje element tekstu, który jest bardzo ważny w analizie tych szablonów. A jeżeli ten parametr istnieje w zestawie parametrów, wtedy ustawiamy zmienną modykacji szablonu: {{Code|czy_modyfikacja}}, na wartość {{Code|false}}, aby było wiadomo, że modyfikacji w szablonie nie dokonano, jeżeli w nim nie znaleziono znaczników. Co potem uruchamiamy funkcję kompletowania tekstu wikikodu analizowanego szablonu: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}}, by wnętrze znacznika {{Tag|div}} zastąpić jej zawartością, wtedy i tylko wtedy, gdy funkcja: {{Code|{{sr|#p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego|b=tak}}}}, na podstawie analizy parametru: {{Code|tekst}}, zwróci wartość {{Code|true}}, a wtedy się nie dzieje, gdy w zawartości jest znak nowej linii, a przeciwnie w niej są rozdziały dodatnie, czy ujemne, wtedy na ten parametr są uruchamiane pewne funkcje, anulujące właściwości tych rozdziałów, i w takim razie jest ustawiany ten parametr modyfikacji na wartość prawdziwą, i wtedy kod tego szablonu jest zastąpiony odpowiednio zmodyfikowaną zawartością tego szablonu.
Po wyjściu z funkcji kompletowania jest sprawdzana zmienna modyfikacji: {{Code|czy_modyfikacja}}, czy przybiera wartość prawdziwą, a jeżeli tak, to zwracana jest wartość z tej funkcji na zewnątrz opisywanej.
{{HNumer|1=
========= {{Śródtytuł|AnalizaSzablonu}}{{Code|AnalizaSzablonu}} =========
}}
Uruchamiamy funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|b=tak}}}}, używając tabeli: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, do analizy szablonu podanej w parametrach szablonu, aby go zastąpić jego odpowiednią zawartością, a jeżeli ona zwróci jakiś nienilowy wynik, to ta funkcja przybiera tą wartość w postaci zwracanej, w innym wypadku jest sprawdzane, czy nazwa szablonu pasuje do jednych do kluczu z tabel: {{LinkPatrz|p.szablony_do_usuwania_z_tekstu}}, {{LinkPatrz|p.szablony_bez_generowania_napisowego}} i {{LinkPatrz|p.szablony_nie_typowo_linkowe}}. Jeżeli pasuje, to funkcja zwraca ciąg pusty, przeciwnie wartość {{Code|nil}}.
{{HNumer|1=
========= Parametry funkcji {{LinkŚródtytuł|AnalizaSzablonu}} =========
}}
Funkcja analizująca szablon pod pewnymi warunkami zamieniające pewne zawartości wywołań szablonów na wartości puste lub nie zwracające żadnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaSzablonu(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}.
Gdy funkcja {{LinkŚródtytuł|AnalizaSzablonu}}, zwróci wartość odpowiadających łańcuchowi znaków, wtedy opisywana funkcja nadrzędnna zwraca wartość pustą, to wtedy funkcja: {{LinkŚródtytuł|FuncSzablon}}, ma zwracaną wartość równą tej wartości, a jeżeli nie ma jej, to ona idzie dalej.
{{HNumer|1=
========= Modyfikacja napisów wprowadzenia tekstu szablonowych =========
}}
Uruchamiana jest funkcja {{LinkŚródtytuł|UsuwanieZnacznikowe}}, która zwraca dwie wartości {{Code|szablon}} i {{Code|czy_center}}.
{{HNumer|1=
========= Szablony generowania nagłówków - generowanie zawartości na podstawie pewnych wniosków =========
}}
{{Tab}}Jeżeli pierwszy parametr tej funkcji zwróci wartość nie {{Code|nil}}, wtedy wiadomo, że zawartość szablonu się zmieniła, wtedy sprawdzamy, czy wywołanie szablonowe, jest jednych ze znaczników: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli tak, to liczy jego zawartość, a jeśli ona istnieje, wtedy sprawdzamy, czy w niej jest rozdział dodatni, czy ujemny, a jeżeli jest, to funkcja zwraca tą zawartość z tabelą parametrów szablonu.
{{HNumer|1=
========== Aktualizacja bazy danych kodowania '''szablonowego''' zakodowanego wikikodu ==========
}}
Po wyjściu z tej funkcji jest sprawdzane, czy funkcja zwróci wartość odpowiadająca prawdziwej, jeżeli tak, to ona zwróci ten wynik, jeżeli nie, to aktualizowana jest pozycja z: {{Code|szablon}} {{Code|{{=}}}} {{Code|szablon}}, według:
<syntaxhighlight lang="lua">
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
</syntaxhighlight>
A sama funkcja {{LinkŚródtytuł|FuncSzablon}} zakańcza się z wartością {{Code|nil}}.
{{HNumer|1=
========= Szablony generowania nagłówków - bez modyfikacji szablonów napisu wprowadzenia tekstu =========
}}
A gdy {{Code|szablon}} odpowiada wartości fałszywej, a {{Code|czy_center}} prawdziwej, wtedy szablon nie został zmodyfikowany, w takim razie sprawdzamy, czy nazwa szablonu pasuje do tej samej tabeli, co poprzednio dla prawdziwego {{Code|szablon}}, ale tutaj jest fałszywe, wtedy robimy podobne operacje, ale tym razem bez tabeli parametrów.
{{HNumer|1=
========= Szablony znaczników odpowiadające właściwym znacznikom '''HTML''' innym niż centrowania i nagłówków =========
}}
A gdy {{Code|szablon}} i {{Code|czy_center}} są równe odpowiadającej wartości fałszywej, wtedy sprawdzamy, czy szablon jest znacznikiem szablonowym z tabeli o pewnych kluczach: {{LinkPatrz|p.znaczniki_szablonowe}}. A jeżeli ma parametr z zawartością, to go przekształcamy szablonem {{LinkŚródtytuł|ZamienNaKody}}, by usunąc magiczność rozdziałów dpdatnich i ujemnych,jeżeli on znajduje się na samym poczatku, czy końcu zawartości.
Jeżeli funkcja jest tak zdfiniownana, tzn.: {{LinkŚródtytuł|FuncSzablon}}, jeżeli ma wynik odpowiadający prawdziwej wartości, wtedy jest zwracane {{Code|wynik,nil,true}} - co tutaj odpowiada zastępowaniom wartości, przeciwnie {{Code|nil,true}}, co tutaj odpowiada nierozwijaniu tej wartości.
{{HNumer|1=
======== Dalszy opis funkcji - obiekty nieszablonowe, czyli typu ZNACZNIK i inne ========
}}
{{Tab}}Dla {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}}, gdy nazwa znacznika nie jest {{Tag|center}} lub znacznikem wprowadzenia tekstu z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wtedy gdy jest nierówny: {{Tag|ref}}, {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, zatem definiujemy funkcją {{Code|fun}}, która zwracamy w postaci parametrów, do funkcji jako w zestawie argumentów zrzuconych: {{Code|fun,nil,true}}.
{{HNumer|1=
========= Znaczniki inne niż {{Tag|div}} =========
}}
Funkcja {{Code|fun}} ma definicję, która nie przyjmuje żadnych parametrów. W tej funkcji, gdy znacznik nie jest równy {{Tag|div}}, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, a potem na jej wyniku {{LinkŚródtytuł|ZamienNaKody}}, a jeżeli zawartość nie istnieje, to ona zwróci wynik równy ciągowi pustemu.
{{HNumer|1=
========= Znaczniki warstw {{Tag|div}} =========
}}
A gdy jest jednak tym znacznikiem, to wtedy używamy funkcji dla parametru {{Code|tekst}}, czyli dla elementu wywołania szablonowego, gdy nie ma w nim rozdziałów dodatnich, czy ujemnych, czy są znaki nowej linii, wtedy przetwarzamy jego wynik, używając funkcji zastępowania {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przetwarzając i modyfikując odpowiednio niepustą i istniejącą jego zawartość, co następnie go zwracając. Dla innej jego zawartości jest zwracany ciag pusty.
{{HNumer|1=
========= Inne znaczniki niż rozważane wcześniej jako podstawa =========
}}
{{Tab}}Gdy znacznik nie jest tym, co myślimy, wtedy jest sprawdzana zawartość, czy istnieją w nim rozdziały dodatnie lub ujemne, to zwracany jest wynik taki symbolizujący według dokumentacji zastąpienie znacznika jego zawartością.
{{HNumer|1=
========= Znaczniki zostały zmodyfikowane przez funkcję obrabające znaczniki do jednej linii =========
}}
{{Tab}}Jeżeli funkcja nie przeszła dalszych etapów, to sprawdzany jest wynik funkcją {{LinkŚródtytuł|UsuwanieZnacznikowe}}, do modsyfikacji szablonowej i znacznikowej, jeżeli ma wartość równą odpowiadającej prawdziwej, wtedy w tabeli bazy kodów {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} dla tego obiektu i kodu jest naprawiana jego treść według tego wyniku uzyskanego z tej ostatniej funkcji.
{{Tab}}Dalej rzucany jest wynik nierozwijania, jeśli funkcja doszła do tego etapu.
{{HNumer|1=
======== Inne znaczniki specjalne mechanizmu MediaWiki oraz linki zewnętrzne i wewnętrzne ========
}}
Gdy obiekt jest równy {{Code|INNEPRE}} i zawartość składa się jego z samych odstępów, wtedy on jest zastępowany ciągiem pustym. Przeciwnie jest zrzucany wynik nierozwijania tego elementu.
{{HNumer|1=
========= Obiekty linków zewnętrznych i wewnętrznych =========
}}
Gdy mamy obiekt równy: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|b=tak}}}}, opisaną wcześniej, w nim znaczniki są zamieniane na ich zawartość, a jeżeli w nim tego nie ma, to nic nie jest robione.
Gdy dało się wtedy zaktualizować zmienną: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, to wtedy zmieniamy zawartość dla tego obiektu i kodu w tabeli bazy kodowania: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, na tą zawartość.
Sprawdzamy, czy ten link symbolizuje element spisu, którą sprawdzamy według funkcji: {{Code|{{sr|#p.CzyElementSpisuRzeczy|p=StronicowyParser/Potrzebne}}}}, a jeżeli nie, to funkcja zwraca wartość pustą, którą jest zastępowany taki link.
{{HNumer|1=
======== Wikitabele jako obiekty kodowania szablonowego, czyli elementy typu WIKITABELA ========
}}
Gdy obiekt jest o wartości {{Code|WIKITABELA}}, to wtedy wykorzystujemy zestaw funkcji: {{LzLua|mw.ustring.gsub}} i {{LinkŚródtytuł|PrzetwarzanieZnacznikowe}}, aby przetworzyć tekst z tabelką, do zwykłych odnośników z linkami z wikitabeli, na przykład. Na samym końcu funkcja zwraca wynik do zastąpienia takiej wikitabeli pewnym ciągiem w odpowiedni udokomentowany sposób.
====== Zmiana tekstu krok 2 ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w mechanizmie '''MediaWiki''', ta funkcja działa dla każdej linii w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Funkcja upraszcza zawartość tych linii (rozdziałów) do najprostrzej postaci, by w nim bie byłó znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. Znaczniki nowej linii i kreski poziomej, czy znaki nowej linii, są zastępowane spacją.
Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjcalne. Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim.
====== Zmiana tekstu krok 3 ======
Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, napisu wprowadzenia tekstu, których ich nazwy pasują do: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia, a szablony o nazwach z tabeli: {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiana jest nowa linia wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według funkcji podanej w nagłówku, ale też w funkcji w tabeli transportu, na podstawie użycia funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
==== Kod dalszy bez wybranej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ====
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{LinkPatrz|czy_rozdzialy_analizowac}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcja inicjująca jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{Code|{{sr|#p.IterTekst|b=tak}}}}.
==== Kod wspólny ====
===== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} =====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie.
====== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ======
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy innych obiektów niż szablon, czy znacznik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. W innym rozgałezieniu tej instrukcji ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
====== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ======
Funkcja rozważa ogólnie linie z obietami {{Code|SZABLON}} albo {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy szablonów znaczników, czy normalnych ich, innych niż centrowania i nagłówków, ale nadal znaczników.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy nie okładek, zatrzymując się właśne na nich, rozwijąc pierwszą z koleii okładkę. Iterator iteruje po zawartości jakiegoś elementu, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
{{HNumer|1=
======= {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} =======
}}
Funkcja właściwa do rozwazania szczególnego z obiektami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} lub {{Code|1}}, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
====== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ======
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści. Funcja służy do rozważania nagłówków centrowanych szablonowo, czy znacznikowo, a nawet gdy zamiast tego mamy znacznik nagłówka.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami,
* {{Code|hn_number}} {{Patrz|hn_number}} - czy to jest zawartość szablonu centrowania.
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, czy w spisie są jakieś początkowe artykuły, które nie należą do żadnego rozdziału, tzw. artykuły wstępne. Dalej są sprawdzane, czy wprowadzony tekstjako pierwszy argument, czy jest nagłówkiem spisu treści rozdziału centrowanego, czy nagłówkowego.
{{HNumer|1=
======= {{Śródtytuł|Spis}}{{Code|Spis}} =======
}}
Jest to funkcja szczególna do rozwazania szablonów centrowania spisów treści.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest linku spisu treści, wtedy dla istniejącego wpisu w pierwszej wartości sprawdzanej dla artykułu książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}, odpowiednimi wartościami, i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
{{HNumer|1=
======= Dalszy opis funkcji =======
}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
Przeciwnie w innym wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{LinkPatrz|hn_number}} i {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
W innym wypadku nie jest zwracana żadna wartość.
====== Kod dalszy funkcji ======
{{HNumer|1=
======= Warunki wstępne =======
}}
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
Gdy mamy włączoną opcję: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, wtedy możemy powiedzieć, ze również {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
{{Tab}}Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału, dodatniego, czy ujemnego, na początku otrzymanego spisu treści dla jego początkowych linii.
{{HNumer|1=
======= Iterator po rozważanej zmiennej, czyli iteracja po tekście =======
}}
Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest później uruchamiana iteracja, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
{{HNumer|1=
======== Obiekt szablonowy, czyli typu SZABLON ========
}}
W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, a gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość {{Code|true}}, czyli znalazł okłądkę, przeciwnie na {{Code|false}}, a tu już nie.
{{HNumer|1=
======== Obiekt znacznikowy, czyli typu ZNACZNIK ========
}}
A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, a gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, a potem z tym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
{{HNumer|1=
======== Obiekty linkowe, czyli typu: LINKW i LINKZ, a więc linki wewnętrzne i zewnętrzne ========
}}
Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano okładkę, przeciwnie na {{Code|false}}, a tu już nie, tak jak dla obiektu {{Code|SZABLON}}.
====== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ======
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}} jest {{Code|true}}, i gdy zmienna {{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}, jest bez wartości, wtedy dla {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst nie kończy się na {{Code|.}}, dla określonej linii nieporządnej linii. W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, przeciwnie ustawiana jest wartość: {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. A gdy {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu, i zwracana jest wartość pusta z drugim nienilowym argumentem, gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadkujuż nie.
; Zmienna {{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}
{{Tab}}Gdy {{LinkPatrz|podrecznik}} ma wartość {{Code|false}}, wtedy dla żadnej wartości {{LinkPatrz|wartosc}}, gdy zmienna: {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem jest ciąg znaków określone wzorem {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}}, jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, a jeśli jednak tak, to zmienna: {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, w innym rozgłazieniu instrukcji '''jeśli''' dla: {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
; Gdy zmienna {{Code|podrecznik}} nie przyjmuje żadnej wartości logicznej
{{Tab}}Gdy zmienna {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, wtedy dla {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, też jest zakańczana, w przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
====== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ======
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
====== Użytek wartości ze zmiennej {{Code|tak}} ======
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{LinkPatrz|tak}} jest równa wartości prawdziwej, to uruchamiana jest funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, przeciwnie bezparametrowo {{Code|funkcja2}} {{LinkPatrz|funkcja2}}.
==== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ====
Liczymy poszczególne linie z iteratora otrzymanego z {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych
Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
;; Rozdział dodatni
Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|poziom_rozdzialu}}.
Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{LinkPatrz|czy_rozdzialy_analizowac}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami,w innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą i trzecią, funkcją, który z parametru {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} usuwa jej wartość.
;;; Pierwsza anonimowa funkcja
{{Tab}}Tą pierwszą funkcją, jest tak gdy: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. Przeciwnie sprawdzamy wartość zmiennej {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. A gdy nie ma takiego rozdziału, to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na {{LinkPatrz|szablon_spis_tresci}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. A jeżeli {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
;;; Druga anonimowa funkcja
{{Tab}}Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
;; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe
Gdy nie udało się znaleźć {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
==== Wartości zwracane przez iterator ====
Gdy: {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
Gdzie parametry wartości zwracanych:
* {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str}} w kodzie,
* {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
Gdy {{LinkPatrz|__FUNKCJA2}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2}} z parametrem identyfikującym, że to jest rozdział {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cwt2lbcsy15xvtzz6ewj2u53f8ejqq3
Szablon:Link FA/Wikibooks-pozycja
10
63951
553838
553793
2026-09-01T14:05:27Z
Persino
2851
553838
wikitext
text/x-wiki
<includeonly><!--
-->{{Span|klasa=Szablon_Link_FA {{#if:{{{linia|}}}|Szablon_Link_FA-linia}}|styl={{{styl tekst|}}}<!--
-->|<!--
--><templatestyles src="Szablon:Link FA/style.css"/><!--
-->{{Plik
| plik = LinkFA-star.png
| id = {{Jeśli niepuste|{{{id|}}}|indicator_Link_FA_wersji_językowych_polskiego_Wikibooks-{{{język|en}}}{{Jeśli niepuste|{{{pudełko|}}}|przed lewy=-}}-plik}}
| rozmiar = {{{rozmiar plik|}}}
| klasa = Szablon_Link_FA-Plik
| styl = {{{styl plik|}}}
| opis = {{Jeśli niepuste|{{{strona|}}}|Podręczniki w wersjach językowych polskiego Wikibooks'a}}
| link = {{{język|en}}}:{{{strona|_}}}
}} {{Span|klasa=Szablon_Link_FA-Tekst|styl={{{styl tekst|}}}|({{lo|{{Jeśli niepuste|{{{strona|_}}}|_}}|{{ucfirst:{{#invoke:lang|mianownik|{{{język|}}}}}}}|k={{{język|}}}}})}}<!--
-->}}<!--
--></includeonly><noinclude><!--
-->{{Dokumentacja|zawartość=Szablon wywołania plikowego z plikiem linkiem, do niego z tekstem po prawej stronie, umieszczany w identyfikatorze lub w tekście, w zzależności od ustawień szablonu nadrzędnego.
; Parametry podstawowe
* {{Code|język}} - kod języka projektu wersji językowej polskiego {{NS|l=tak|pk=d}},
* {{Code|strona}} - a tam jego strona, odpowiednik, strony na polskim tym projekcie,
* {{Code|linia}} - czy wynik szablonu ma być umieszczowiony w identyfikatorze, czy w tekście.
; Parametry formatu
* {{Code|rozmiar plik}} - rozmiar pliku, ma taki sam format, jak format rozmiaru dla szablonu {{s|Plik}}.
; Parametry dodatkowe
* {{Code|styl plik}} - styl dla ramki z plikiem,
* {{Code|styl tekst}} - styl, dla znacznika {{s|span}}, dla całości i ramki z tekstem,
* {{Code|id}} - zastępczy identyfikator plik.
}}<!--
-->{{Kategoria|Szablony problemów - technikalia}}<!--
--></noinclude>
aq6jgbcgp4877u9jgc33pneyxdpk4cp
553840
553838
2026-09-01T14:08:06Z
Persino
2851
553840
wikitext
text/x-wiki
<includeonly><!--
-->{{Span|klasa=Szablon_Link_FA {{#if:{{{linia|}}}|Szablon_Link_FA-linia}}|styl={{{styl tekst|}}}<!--
-->|<!--
--><templatestyles src="Szablon:Link FA/styles.css"/><!--
-->{{Plik
| plik = LinkFA-star.png
| id = {{Jeśli niepuste|{{{id|}}}|indicator_Link_FA_wersji_językowych_polskiego_Wikibooks-{{{język|en}}}{{Jeśli niepuste|{{{pudełko|}}}|przed lewy=-}}-plik}}
| rozmiar = {{{rozmiar plik|}}}
| klasa = Szablon_Link_FA-Plik
| styl = {{{styl plik|}}}
| opis = {{Jeśli niepuste|{{{strona|}}}|Podręczniki w wersjach językowych polskiego Wikibooks'a}}
| link = {{{język|en}}}:{{{strona|_}}}
}} {{Span|klasa=Szablon_Link_FA-Tekst|styl={{{styl tekst|}}}|({{lo|{{Jeśli niepuste|{{{strona|_}}}|_}}|{{ucfirst:{{#invoke:lang|mianownik|{{{język|}}}}}}}|k={{{język|}}}}})}}<!--
-->}}<!--
--></includeonly><noinclude><!--
-->{{Dokumentacja|zawartość=Szablon wywołania plikowego z plikiem linkiem, do niego z tekstem po prawej stronie, umieszczany w identyfikatorze lub w tekście, w zzależności od ustawień szablonu nadrzędnego.
; Parametry podstawowe
* {{Code|język}} - kod języka projektu wersji językowej polskiego {{NS|l=tak|pk=d}},
* {{Code|strona}} - a tam jego strona, odpowiednik, strony na polskim tym projekcie,
* {{Code|linia}} - czy wynik szablonu ma być umieszczowiony w identyfikatorze, czy w tekście.
; Parametry formatu
* {{Code|rozmiar plik}} - rozmiar pliku, ma taki sam format, jak format rozmiaru dla szablonu {{s|Plik}}.
; Parametry dodatkowe
* {{Code|styl plik}} - styl dla ramki z plikiem,
* {{Code|styl tekst}} - styl, dla znacznika {{s|span}}, dla całości i ramki z tekstem,
* {{Code|id}} - zastępczy identyfikator plik.
}}<!--
-->{{Kategoria|Szablony problemów - technikalia}}<!--
--></noinclude>
6fgyvhxor2g4kx84drjvyyz43rp6tvv
Szablon:Link FA/styles.css
10
63952
553839
551974
2026-09-01T14:07:10Z
Persino
2851
Persino przeniósł(-osła) stronę [[Szablon:Link FA/style.css]] do [[Szablon:Link FA/styles.css]], bez pozostawienia przekierowania pod starym tytułem
551974
sanitized-css
text/css
span.Szablon_Link_FA,
span.Szablon_Link_FA span.Szablon_Link_FA-Tekst{
font-size:1em;
line-height:1.2;
display:inline-block;
vertical-align:text-bottom;
}
span.Szablon_Link_FA span.Szablon_Link_FA-Plik{
font-size:1em;
line-height:1.2;
width:fit-content;
height:fit-content;
display:inline-block;
vertical-align:top;
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
kgmnu617zvi7u31kq2hz2se0jxwxam5
553841
553839
2026-09-01T14:09:32Z
Persino
2851
553841
sanitized-css
text/css
span.Szablon_Link_FA.Szablon_Link_FA-linia{
vertical-align:middle;
}
span.Szablon_Link_FA,
span.Szablon_Link_FA span.Szablon_Link_FA-Tekst{
font-size:1em;
line-height:1.2;
display:inline-block;
vertical-align:text-bottom;
}
span.Szablon_Link_FA span.Szablon_Link_FA-Plik{
font-size:1em;
line-height:1.2;
width:fit-content;
height:fit-content;
display:inline-block;
vertical-align:top;
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
moz1e9ae59n4rqhixgtcw7dfll2oims
Moduł:Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/Kod 1
828
63999
553915
553655
2026-09-02T08:16:37Z
Persino
2851
553915
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="Oto jest tekst wywołania: \"#\"";
local tekst2=html_modul.KodowanieOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
93682e4lnhwxhhcfw1bjiruab5afh63
Moduł:Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/Kod 1
828
64000
553927
553691
2026-09-02T08:25:38Z
Persino
2851
553927
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"](tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
4p31kaososlh9rdppc6z6uzs796kujh
Moduł:Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/Kod 1
828
64001
553928
553693
2026-09-02T08:26:08Z
Persino
2851
553928
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="Oto jest link: [[user:użytkownik|(Użytkownik)]].";
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{tekst=tekst,};
-- Równoważne: local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"]{args={tekst=tekst,},};
local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
1u1idvfcn2zua61i1frq9a130xm1am4
Moduł:Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/Kod 1
828
64002
553938
553730
2026-09-02T08:31:33Z
Persino
2851
553938
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="<span id=\"toc\">Oto jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}, i link: [[Pomoc:Spis treści|Spis treści]]</span>.";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneTaguNowiki{args={tekst=tekst,},};
local tekst2=html_modul.ZnakiSpecjalneTaguNowiki(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
bambywf75ct7vrgq9s6ipb1nj049xzp
Moduł:Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/Kod 1
828
64003
553939
553729
2026-09-02T08:32:00Z
Persino
2851
553939
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="[pl] Oto jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}, i link: [[Pomoc:Spis treści|Spis treści]]";
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZnakiSpecjalneWikiLinku{args={tekst=tekst,},};
local html2=html_modul.ZnakiSpecjalneWikiLinku(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"html2",html2,},
});
return wikikod;
end;
return p;
6u7ko01tn8r7zeq9qz1hc44hz6579ly
Moduł:Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/Kod 1
828
64004
553907
553647
2026-09-02T08:10:41Z
Persino
2851
553907
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local html="[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}";
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{html=html,};
-- Równoważne: local html2=html_modul.EncodeSpecjalneZnakiHtml{args={html=html,},};
local html2=html_modul.EncodeSpecjalneZnakiHtml(html);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"html",html,},
{"html2",html2,},
});
return wikikod;
end;
return p;
1k1lfwi51bi977vlpf4osamph72f1c9
Moduł:Wikibooks/Przykład/Html/EncodeZnakProloguList/Kod 1
828
64005
553912
553652
2026-09-02T08:14:44Z
Persino
2851
553912
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="\n* Oto jest pierwszy element listy,\n*: Oto jest drugi element listy.";
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.EncodeZnakProloguList{args={tekst=tekst,},};
local tekst2=html_modul.EncodeZnakProloguList(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
gwkepkjccl18hgjrrn7ghr05a3whqsi
Moduł:Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/Kod 1
828
64007
553920
553669
2026-09-02T08:21:30Z
Persino
2851
553920
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona?action=edit§ion=2";
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.ParametryPrzypisaniaZnakowegoEncodeHtml(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
20jshs5w9cpeen2pani6lidbqzw3qh9
Moduł:Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/Kod 1
828
64008
553923
553677
2026-09-02T08:23:07Z
Persino
2851
553923
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="Wikibooks:Strona=Parametry";
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml{args={tekst=tekst,},};
local tekst2=html_modul.PrzypisanieZnakoweEncodeHtml(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
fz6g7jr9tqf1ov1qo1q94a4vftel5py
Moduł:Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/Kod 1
828
64009
553935
553712
2026-09-02T08:30:21Z
Persino
2851
553935
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="subst:msg:Szablon:Nazwa_strony";
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{tekst=tekst,};
-- Równoważne: local tekst2=html_modul.ZamianaDwukropkaNaKodHtml{args={tekst=tekst,},};
local tekst2=html_modul.ZamianaDwukropkaNaKodHtml(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
m8nc68xr5rgu401dfhn2j44isq8zrit
Moduł:Wikibooks/Przykład/Html/KodHTMLZnaku/Kod 1
828
64010
553914
553654
2026-09-02T08:15:57Z
Persino
2851
553914
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local znak="k";
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{[1]=znak,};
-- Równoważne: local tekst2=html_modul.KodHTMLZnaku{args={[1]=znak,},};
local tekst2=html_modul.KodHTMLZnaku(znak);
-- Równoważne: local tekst3=html_modul.KodHTMLZnaku{[1]=znak,[1]="tak",};
local tekst3=html_modul.KodHTMLZnaku{args={[1]=znak,[2]="tak",},};
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"znak",znak,},
{"tekst2",tekst2,},
{"tekst3",tekst3,},
});
return wikikod;
end;
return p;
1n3ni3hghrtxrwliheoqj4baygcifi3
Moduł:Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/Kod 1
828
64011
553916
553665
2026-09-02T08:19:02Z
Persino
2851
553916
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="k{{s";
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,};
-- Równoważne: local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,},};
local tekst2=html_modul["KodyHTMLZnakówWikiCiągu"](tekst);
-- Równoważne: local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{[1]=tekst,[1]="tak",};
local tekst3=html_modul["KodyHTMLZnakówWikiCiągu"]{args={[1]=tekst,[2]="tak",},};
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
{"tekst3",tekst3,},
});
return wikikod;
end;
return p;
21cd3epcimj7p5qa4of1vrc2wbd8txy
Moduł:Wikibooks/Przykład/Html/EncodeId/Kod 1
828
64012
553903
553643
2026-09-02T08:07:58Z
Persino
2851
553903
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,true);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"id",id,},
{"id2",id2,},
});
return wikikod;
end;
return p;
1jgd80vzhyikil7y122jdox12g1hcxt
Moduł:Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/Kod 1
828
64013
553934
553710
2026-09-02T08:29:55Z
Persino
2851
553934
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Tutaj jest zakodowany znak HTML, o kodzie dziesiętnym "‎", składający się z trzech bajtów: "â", "€" i "Ž";
local tekst1="Oto jest znak: ‎.";
-- Zamiana tego kodu na znak;
local tekst2=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tekst1);
-- Tekst bez tego znaku, bo on został w tym wywołaniu całkowicie usunięty;
local tekst3=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(tekst2);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst1",tekst1,},
{"tekst2",tekst2,},
{"tekst3",tekst3,},
});
return wikikod;
end;
return p;
lkgzc06vyz5k89c7r1y4s94dvwrbyit
Moduł:Wikibooks/Przykład/Html/EncodeWiki/Kod 1
828
64014
553909
553649
2026-09-02T08:12:39Z
Persino
2851
553909
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: \"‎\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;\"__";
local parametr2=html_modul.EncodeWiki(parametr,false);
local parametr3=html_modul.EncodeWiki(parametr,true);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"parametr",parametr,},
{"parametr2",parametr2,},
{"parametr3",parametr3,},
});
return wikikod;
end;
return p;
qskpreh51uncb3jh5yc2j0lwntvq9i9
Moduł:Wikibooks/Przykład/Html/DecodeWiki/Kod 1
828
64015
553899
553639
2026-09-02T08:05:15Z
Persino
2851
553899
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local parametr="__Oto jest znak: "‎" i inne_znaki_w_URL: "https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa;"__";
local parametr2=html_modul.DecodeWiki(parametr,false);
local parametr3=html_modul.DecodeWiki(parametr,true);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"parametr",parametr,},
{"parametr2",parametr2,},
{"parametr3",parametr3,},
});
return wikikod;
end;
return p;
es8smljulglpi992upgn48gppdtt73w
Moduł:Wikibooks/Przykład/Html/IsEncodedHtml/Kod 1
828
64016
553913
553653
2026-09-02T08:15:22Z
Persino
2851
553913
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Pierwszy przykład:
local parametr1="abc?edit=action";
-- Wartość zmiennej obliczona jest: czy_tak1=true, czyli parametr1 można uznać za zakodowany;
local czy_tak1=html_modul.IsEncodedHtml(parametr1,true,false);
-- Drugi przykład:
local parametr2="a%YTbc?edit=action;";
-- Wartość zmiennej obliczona jest: czy_tak2=false; czyli parametr2można uznać, że nie jest zakodowany;
local czy_tak2=html_modul.IsEncodedHtml(parametr2,true,false);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"parametr1",parametr1,},
{"czy_tak1",czy_tak1,},
{"parametr2",parametr2,},
{"czy_tak2",czy_tak2,},
});
return wikikod;
end;
return p;
4zp42zzers1ssux7jeq58zj4j026aed
Moduł:Wikibooks/Przykład/Html/EncodeHtml/Kod 1
828
64017
553901
553642
2026-09-02T08:06:54Z
Persino
2851
553901
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="abc___?action=edit&section=21#nagłówek";
-- Tekst zostanie uznany za zakodowany, sprawdzane, czy on ma znaki "%", czyli on tego nie posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"parametr",parametr,},
{"parametr2",parametr2,},
});
return wikikod;
end;
return p;
l0tkno5z0if9vrk7fwdzfsu3cr9gt6h
Moduł:Wikibooks/Przykład/Html/DecodeHtml/Kod 1
828
64018
553895
553636
2026-09-02T07:59:52Z
Persino
2851
553895
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Parametr zawiera znaki zakodowane funkcją mw.uri.encode i kody HTML znaków;
local parametr="a%25YTbc___%3Faction%3Dedit&section=23;";
local parametr2=html_modul.DecodeHtml(parametr,true);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"parametr",parametr,},
{"parametr2",parametr2,},
});
return wikikod;
end;
return p;
k13wbvlxa3e0n1b315knyms9vohipla
Moduł:Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/Kod 1
828
64019
553926
553683
2026-09-02T08:25:07Z
Persino
2851
553926
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="<span id=\"Znaki<>\\\"\">To jest zawartość</span>";
local tekst2=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
cymo9typdlrbjexnp0flpc06prk5taa
Moduł:Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/Kod 1
828
64020
553925
553681
2026-09-02T08:24:06Z
Persino
2851
553925
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="<a href=\"/wiki/Strona?tytan1=1&tytan2=2\" id=\"Strona:\"nazwa\"\">Zawartość znacznika</a>";
local tekst2=html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
ohynhjcda5qyxsmdwd7ldpsmn87dv59
Moduł:Wikibooks/Przykład/Html/NagłówekStronyAdresu/Kod 1
828
64021
553917
553660
2026-09-02T08:19:32Z
Persino
2851
553917
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local naglowek=html_modul["NagłówekStronyAdresu"](strona,true,tabela_nazw_adresu);
local naglowek=html_modul["NagłówekStronyAdresu"]({strona=strona,["z nie dolnymi z myślnikami"]=true,},nil,tabela_nazw_adresu);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"strona",strona,},
{"naglowek",naglowek,},
});
return wikikod;
end;
return p;
tbby2klnr38st94671jrzrrw5sxrsmi
Moduł:Wikibooks/Przykład/Html/ParametryStronyAdresu/Kod 1
828
64022
553921
553671
2026-09-02T08:22:02Z
Persino
2851
553921
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["ParametryStronyAdresu"](strona,true,tabela_nazw_adresu);
local parametry=html_modul["ParametryStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"strona",strona,},
{"parametry",parametry,},
});
return wikikod;
end;
return p;
axkkv6wbusd1ic8rmospbu11vi24ilf
Moduł:Wikibooks/Przykład/Html/NazwaStronyAdresu/Kod 1
828
64023
553918
553666
2026-09-02T08:20:06Z
Persino
2851
553918
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["NazwaStronyAdresu"](strona,true,tabela_nazw_adresu);
local nazwa_strony=html_modul["NazwaStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"strona",strona,},
{"nazwa_strony",nazwa_strony,},
});
return wikikod;
end;
return p;
029gisiolxene7v1g9udrix1zoa857c
Moduł:Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/Kod 1
828
64024
553919
553664
2026-09-02T08:20:42Z
Persino
2851
553919
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local strona="title=Strona ___ główna & action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
-- Równoważne: local parametry=html_modul["NazwaStronyZParametrówStronyAdresu"](strona,true);
local nazwa_strony=html_modul["NazwaStronyZParametrówStronyAdresu"]({parametry=strona,["czy naprawiać"]=true,},nil);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"strona",strona,},
{"nazwa_strony",nazwa_strony,},
});
return wikikod;
end;
return p;
t9ohtzin9hxwf97k138ilbdo22yvyif
Moduł:Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/Kod 1
828
64025
553922
553673
2026-09-02T08:22:32Z
Persino
2851
553922
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local strona="https://pl.wikibooks.org/wiki/Strona ___ główna ? action____=____edit ____&____ section = 2 # ____ Nagłówek____________strony ";
local tabela_nazw_adresu={};
-- Równoważne: local parametry=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](strona,true,tabela_nazw_adresu);
local adres=html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]({strona=strona,["czy naprawiać"]=true,},nil,tabela_nazw_adresu);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"strona",strona,},
{"adres",adres,},
});
return wikikod;
end;
return p;
sea97lcn7qwqxvg6mjyphca3z78b0te
Moduł:Wikibooks/Przykład/Html/URLStrona/Kod 1
828
64026
553933
553707
2026-09-02T08:29:31Z
Persino
2851
553933
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local url="//pl.wikibooks.org/wiki/Strona_artykułu";
local serwer,nazwa=html_modul.URLStrona{url=url,["ukośnik"]=true,};
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"url",url,},
{"serwer",serwer,},
{"nazwa",nazwa,},
});
return wikikod;
end;
return p;
s6i6yzc91i5oyx4k95vd81610f5gnw2
Moduł:Wikibooks/Przykład/Html/UrlBezProtokołu/Kod 1
828
64027
553932
553706
2026-09-02T08:28:37Z
Persino
2851
553932
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local url1="użytkownik@skrzynka.org";
-- Równoważnie: local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"](mail);
local adres1,protokol1,sposob1=html_modul["UrlBezProtokołu"]{url=url1,};
---
local url2="https://pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"](url);
local adres2,protokol2,sposob2=html_modul["UrlBezProtokołu"]{url=url2,};
---
local url3="//pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"](url);
local adres3,protokol3,sposob3=html_modul["UrlBezProtokołu"]{url=url3,};
---
local url4="pl.wikibooks.org/wiki/Strona";
-- Równoważnie: local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"](url);
local adres4,protokol4,sposob4=html_modul["UrlBezProtokołu"]{url=url4,};
-- Wyniki;
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"url1",url1,}, {"adres1",adres1,}, {"protokol1",protokol1,}, {"sposob1",sposob1,},
{"url2",url2,}, {"adres2",adres2,}, {"protokol2",protokol2,}, {"sposob2",sposob2,},
{"url3",url3,}, {"adres3",adres3,}, {"protokol3",protokol3,}, {"sposob3",sposob3,},
{"url4",url4,}, {"adres4",adres4,}, {"protokol4",protokol4,}, {"sposob4",sposob4,},
});
return wikikod;
end;
return p;
27pisoqg3a519kkl1lvbcf3hs8u4tel
Moduł:Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/Kod 1
828
64028
553897
553637
2026-09-02T08:03:35Z
Persino
2851
553897
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Tekst z kodami HTML: literowymi, dziesiętnymi i szesnastkowymi;
local tekst="Oto jest link: [[Strona|Nazwa linku]], a w nim spacje niełamliwe i inne znaki: z alfabetu greckiego jak: αΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛμΜνΝξΞοΟπΠρΡσΣτΤυΥφΦχΧψΨωΩ";
-- Wywołanie funkcji odkodujący kody HTML;
local tekst2=html_modul.DecodeKoduHTMLZnaku(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
t27tjjb38z1w0u5184jhywxrvmnrcy1
Moduł:Wikibooks/Przykład/Html/ZamianaEncodeTekst/Kod 1
828
64029
553937
553717
2026-09-02T08:31:09Z
Persino
2851
553937
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local tekst2=html_modul.ZamianaEncodeTekst(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
ku6iuewflfxcy9yppkg3lzlm7pk5j0d
Moduł:Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/Kod 1
828
64030
553936
553716
2026-09-02T08:30:45Z
Persino
2851
553936
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Tekst nie do końca zakodowany wydzielonego według poniższego wzoru;
local tekst="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
-- Wzór, który wydziela części do kodowania jeszcze bardziej niż były na samym początku;
local wzor="[^/%?%=&:%#]+";
-- Wywołanie funkcji kodującej;
local tekst2=html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,html_modul.ZamianaEncodeTekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"wzor",wzor,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
etwmu0t30qa4g8z073qrszea5ak38kp
Moduł:Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/Kod 1
828
64031
553924
553680
2026-09-02T08:23:36Z
Persino
2851
553924
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Adres strony jedynie rozkładaa się na: "strona", "parametry" i "nagłówek";
local strona,parametry,naglowek=html_modul.StronaParametryIdentyfikacjaAdresuHtml(adres);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"adres",adres,},
{"strona",strona,},
{"parametry",parametry,},
{"naglowek",naglowek,},
});
return wikikod;
end;
return p;
4fyzadmuu88yz0o1xp0obmfjmjzca5u
Moduł:Wikibooks/Przykład/Html/TworzenieAdresuHtml/Kod 1
828
64032
553929
553695
2026-09-02T08:26:38Z
Persino
2851
553929
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local strona,parametry,naglowek="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek","action=edit§ion=2","Nagłówek strony";
local adres=html_modul.TworzenieAdresuHtml(strona,parametry,naglowek);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"strona",strona,},
{"parametry",parametry,},
{"naglowek",naglowek,},
{"adres",adres,},
});
return wikikod;
end;
return p;
q6va91onehenxv3vvo0cnzmjiqy1f0i
Moduł:Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/Kod 1
828
64033
553930
553702
2026-09-02T08:27:10Z
Persino
2851
553930
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local function EncodeParametryURL(a,b,c,funkcja_operacji)
return a..funkcja_operacji(b).."="..funkcja_operacji(c);
end;
local function OperacjeHtml(adres,funkcja_operacji)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end);
return adres;
end;
local funkcja_operacji={
[1]=function(tekst)
return html_modul.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,"[^/]+",html_modul.ZamianaEncodeTekst);
end,
[2]=function(tekst)
return html_modul.ZamianaEncodeTekst(tekst);
end,
[3]=function(tekst)
return html_modul.ZamianaEncodeTekst(tekst);
end,
};
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres2=html_modul.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,
-- Funkcja: funkcja_strona;
function(strona,Func)
strona=Func(strona);
return strona;
end,
-- Funkcja: funkcja_parametry;
OperacjeHtml,
-- Funkcja: funkcja_naglowek;
function(naglowek,Func)
naglowek=Func(naglowek);
return naglowek;
end,
funkcja_operacji
);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"adres",adres,},
{"adres2",adres2,},
});
return wikikod;
end;
return p;
bgv6d8x5o8hiiu6p14xlqf28b59v22a
Moduł:Wikibooks/Przykład/Html/EncodeParametryURL/Kod 1
828
64034
553905
553645
2026-09-02T08:09:18Z
Persino
2851
553905
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local adres="//pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obsługa";
local adres2=html_modul.EncodeParametryURL(adres,true,
function(strona,Func)
strona=Func(strona);
return strona;
end,
function(naglowek,Func)
naglowek=Func(naglowek);
return naglowek;
end
);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"adres",adres,},
{"adres2",adres2,},
});
return wikikod;
end;
return p;
kyq40lyy1cpk1sq1k1zgnb5iqznl66m
Moduł:Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/Kod 1
828
64035
553911
553651
2026-09-02T08:14:21Z
Persino
2851
553911
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeZaawansowanyParametryURL(adres,true,
function(strona,Func)
strona=Func(strona);
return strona;
end,
function(naglowek,Func)
naglowek=Func(naglowek);
return naglowek;
end
);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"adres",adres,},
{"adres2",adres2,},
});
return wikikod;
end;
return p;
e6uli3a18fpy9t7pzidjlovl7if8j8s
Moduł:Wikibooks/Przykład/Html/EncodeParametryHtml/Kod 1
828
64036
553904
553644
2026-09-02T08:08:44Z
Persino
2851
553904
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeParametryHtml(adres,true,
function(strona,Func)
strona=Func(strona);
return strona;
end,
function(naglowek,Func)
naglowek=Func(naglowek);
return naglowek;
end
);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"adres",adres,},
{"adres2",adres2,},
});
return wikikod;
end;
return p;
l2383yjbjzb7rq1irxz4fwpoh6zirv9
Moduł:Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/Kod 1
828
64037
553910
553650
2026-09-02T08:13:16Z
Persino
2851
553910
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodeZaawansowanyParametryHtml(adres,true,true,
function(strona,Func)
strona=Func(strona);
return strona;
end,
function(naglowek,Func)
naglowek=Func(naglowek);
return naglowek;
end
);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"adres",adres,},
{"adres2",adres2,},
});
return wikikod;
end;
return p;
hkiyfaffak8vlwy4wib3rn34x834vif
Moduł:Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/Kod 1
828
64038
553896
553641
2026-09-02T08:00:47Z
Persino
2851
553896
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Kody do zamienienia
local tekst="#, # i #";
-- Przetwarzanie tekstu
local tekst2,ile,ile2=html_modul.EncodeHashKoduHtmlTekstu(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
{"ile",ile,},
{"ile2",ile2,},
});
return wikikod;
end;
return p;
f3g38lkiigyuofcm2ikwou63ba77e5s
Moduł:Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/Kod 1
828
64039
553890
553635
2026-09-02T07:52:31Z
Persino
2851
553890
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Zamienione wcześniej kody: tekstu "#, # i #", kolejno na "&num;";
local tekst="&num;, &num; i &num;";
-- Odkodowanie znaków "&num;" w tekście;
local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3);
local ZrodloLua_modul=require("Module:ŹródłoLua");
local wikikod=ZrodloLua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
eitzvb327p31kjc899crbvljkvmey12
553894
553890
2026-09-02T07:59:08Z
Persino
2851
553894
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Zamienione wcześniej kody: tekstu "#, # i #", kolejno na "&num;";
local tekst="&num;, &num; i &num;";
-- Odkodowanie znaków "&num;" w tekście;
local tekst2=html_modul.DecodeHashKoduHtmlTekstu(tekst,3);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
4zhpelzn65f2f1osxjddwz7360rdegs
Moduł:Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/Kod 1
828
64040
553908
553648
2026-09-02T08:12:07Z
Persino
2851
553908
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "#" i "#" oraz jeden od spacji: " ";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona główna###To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst oraz ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2";
local tekst2,ile1,ile2=html_modul.EncodeTempHashKoduHtmlTekstu(tekst);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
{"ile1",ile1,},
{"ile2",ile2,},
});
return wikikod;
end;
return p;
nx3i4k05rmmc9jzrin3dh2g5vh6uyrc
Moduł:Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/Kod 1
828
64041
553898
553638
2026-09-02T08:04:04Z
Persino
2851
553898
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Mamy tutaj kody HTML znaku: "#", czyli: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "#";
local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit§ion=2#Nagłówek strony";
-- Otrzymamy przetworzony tekst, do którego wsadzamy ile uzyskamy znaków z kodem HTML dziesiętnym "ile1" i szesnastkowym "ile2" w wywołaniu local tekst,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(tekst);
local tekst2=html_modul.DecodeTempHashKoduHtmlTekstu(tekst,3,1);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"tekst",tekst,},
{"tekst2",tekst2,},
});
return wikikod;
end;
return p;
1ce3lp9377824qofy2x1u5vflsdm1q8
Moduł:Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/Kod 1
828
64042
553888
553633
2026-09-02T07:51:26Z
Persino
2851
553888
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true);
-- Adres bezprotokonalny;
local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false);
local ZrodloLua_modul=require("Module:ŹródłoLua");
local wikikod=ZrodloLua_modul["ŹródłoLua"](frame,{
{"adres11",adres11,},
{"adres12",adres12,},
{"adres21",adres21,},
{"adres22",adres22,},
});
return wikikod;
end;
return p;
4tt6gkxegw8fmy9q196z38zqg7hht9l
553891
553888
2026-09-02T07:54:33Z
Persino
2851
553891
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres11="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true);
-- Adres bezprotokonalny;
local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
local adres22=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres21,false);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"adres11",adres11,},
{"adres12",adres12,},
{"adres21",adres21,},
{"adres22",adres22,},
});
return wikikod;
end;
return p;
q7a2pwq4rnntf68h7pir06c2m05xwyv
Moduł:Wikibooks/Przykład/Html/UriEncode/Kod 1
828
64043
553931
553697
2026-09-02T08:28:11Z
Persino
2851
553931
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Adres protokonalny;
local adres="https://pl.wikibooks.org/wiki/Strona_główna?action=edit§ion=2#Nagłówek strony";
-- Równoważnie: local adres2=html_modul.UriEncode{html=adres,};
local adres2=html_modul.UriEncode(adres);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"adres",adres,},
{"adres2",adres2,},
});
return wikikod;
end;
return p;
3s12y6z71nko8maf19xuz46n7dudk4b
Moduł:Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/Kod 1
828
64044
553906
553646
2026-09-02T08:10:06Z
Persino
2851
553906
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local adres="Szablon:Link_wewnętrzny?action=edit#Obsługa?";
local adres2=html_modul.EncodePodstawoweHtmlTekstu(adres);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"adres",adres,},
{"adres2",adres2,},
});
return wikikod;
end;
return p;
34b7tbc29qbzi0rc7b8g6kc1mzukz5x
Moduł:Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/Kod 1
828
64045
553900
553640
2026-09-02T08:05:49Z
Persino
2851
553900
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local elementy_adresu_strony="Obsługa?";
local elementy_adresu_strony2=html_modul.EncodeElementyAdresuStrony(elementy_adresu_strony,false,true);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"elementy_adresu_strony",elementy_adresu_strony,},
{"elementy_adresu_strony2",elementy_adresu_strony2,},
});
return wikikod;
end;
return p;
lea40i4salv22d12rq0bdrumphw2o0r
Moduł:Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/Kod 1
828
64046
553889
553634
2026-09-02T07:51:58Z
Persino
2851
553889
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true);
local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true);
local ZrodloLua_modul=require("Module:ŹródłoLua");
local wikikod=ZrodloLua_modul["ŹródłoLua"](frame,{
{"adres",adres,},
{"adres2",adres2,},
{"adres3",adres3,},
});
return wikikod;
end;
return p;
6rblvhar503wuhid8ipdo0vftultay6
553892
553889
2026-09-02T07:55:19Z
Persino
2851
553892
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
local adres="https://pl.wikibooks.org/wiki/Strona_&główna?&?action=edit§ion=2&title=Nazwa strony szablonu: {{!}}#Nagłówek strony";
local adres2=html_modul.AdresProjektuEncodeHtml(adres,false,true);
local adres3=html_modul.AdresProjektuEncodeHtml(adres,true,true);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"adres",adres,},
{"adres2",adres2,},
{"adres3",adres3,},
});
return wikikod;
end;
return p;
q8nbav5ymusflrhwegk3yo80cn3t47i
Moduł:ŹródłoLua
828
64049
553855
553783
2026-09-01T15:39:11Z
Persino
2851
553855
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
name=tostring(name);
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.Table(tabelka)
local parametry_modul=require("Module:Parametry");
local str="{";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local oryginalne_name=name;
if(parametry_modul.TypeString(name))then
name=p.String(name,true);
else
name=tostring(name);
end;
value=p.Value(value);
if(not czy_liczba)then
str=str..p.Name(name).." = "..value..",";
else
if(oryginalne_name==pokolei+1)then
pokolei=pokolei+1;
str=str..value..",";
else
str=str.."["..name.."]".." = "..value..",";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
value=p.Value(value);
str=str..((str~="")and "\n" or "")..p.Name(name).."="..value..";";
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
j87fr1c03mwozkmhfcnq5bdehl5732q
553856
553855
2026-09-01T15:43:52Z
Persino
2851
553856
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(not parametry_modul.TypeTable(name))then
name=tostring(name);
else
name=p.Table(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.Table(tabelka)
local parametry_modul=require("Module:Parametry");
local str="{";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
value=p.Value(value);
if(not czy_liczba)then
str=str..p.Name(name).." = "..value..",";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..value..",";
else
str=str.."["..name.."]".." = "..value..",";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
value=p.Value(value);
str=str..((str~="")and "\n" or "")..p.Name(name).."="..value..";";
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
kkvhekkfx4y3ejoxe86e7fbljjcuhi8
553857
553856
2026-09-01T15:46:26Z
Persino
2851
553857
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa=5,},6,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(not parametry_modul.TypeTable(name))then
name=tostring(name);
else
name=p.Table(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.Table(tabelka)
local parametry_modul=require("Module:Parametry");
local str="{";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
value=p.Value(value);
if(not czy_liczba)then
str=str..p.Name(name).." = "..value..",";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..value..",";
else
str=str.."["..name.."]".." = "..value..",";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
value=p.Value(value);
str=str..((str~="")and "\n" or "")..p.Name(name).."="..value..";";
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
abn1hyfr5hy8iweueq72hgeg9v6uegb
553858
553857
2026-09-01T15:51:33Z
Persino
2851
553858
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa=5,},6,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(not parametry_modul.TypeTable(name))then
name=tostring(name);
else
name=p.Table(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.Table(tabelka)
local parametry_modul=require("Module:Parametry");
local str="{";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
value=p.Value(value);
if(not czy_liczba)then
str=str..p.Name(name).." = "..value..",";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..value..",";
else
str=str.."["..name.."]".." = "..value..",";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.PozycjaZmienna(name,value)
name=p.Name(name);
value=p.Value(value);
local str=name.."="..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
hvccuwv7badyrwsxxtgc1cf4783sr8v
553859
553858
2026-09-01T15:56:14Z
Persino
2851
553859
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa=5,["święto"]=5,},6,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(not parametry_modul.TypeTable(name))then
name=tostring(name);
else
name=p.Table(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.Table(tabelka)
local parametry_modul=require("Module:Parametry");
local str="{";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
value=p.Value(value);
if(not czy_liczba)then
str=str..p.Name(name).." = "..value..",";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..value..",";
else
str=str.."["..name.."]".." = "..value..",";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.PozycjaZmienna(name,value)
name=p.Name(name);
value=p.Value(value);
local str=name.."="..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
9hl8alpijaaotlq1w08746o41fdxrvr
553860
553859
2026-09-01T15:58:01Z
Persino
2851
553860
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(not parametry_modul.TypeTable(name))then
name=tostring(name);
else
name=p.Table(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.Table(tabelka)
local parametry_modul=require("Module:Parametry");
local str="{";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
value=p.Value(value);
if(not czy_liczba)then
str=str..p.Name(name).." = "..value..",";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..value..",";
else
str=str.."["..name.."]".." = "..value..",";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.PozycjaZmienna(name,value)
name=p.Name(name);
value=p.Value(value);
local str=name.."="..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
n3xy3hxgi2nlnzov3rz9u3soc9u1stb
553861
553860
2026-09-01T16:00:49Z
Persino
2851
553861
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(not parametry_modul.TypeTable(name))then
name=tostring(name);
else
name=p.Table(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.Table(tabelka)
local parametry_modul=require("Module:Parametry");
local str="{";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
value=p.Value(value);
if(not czy_liczba)then
str=str..p.Name(name).." = "..value..",";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..value..",";
else
str=str.."["..name.."]".." = "..value..",";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.PozycjaZmienna(name,value)
name=p.Name(name);
value=p.Value(value);
local str=name.."="..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
603pibn40xe3n8rg7ekxrd5486y2v8m
553862
553861
2026-09-01T16:29:40Z
Persino
2851
553862
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value,tabela_elementy_tabelowe);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(not parametry_modul.TypeTable(name))then
name=tostring(name);
else
name=p.Table(name,tabela_elementy_tabelowe);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="{";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str;local value_str;
if(parametry_modul.TypeTable(value))then
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe)do
if(b[2]==value)then
name_tab=b[1];
break;
end;
end;
if(not name_tab)then
local tabela_elementy_tabelowe_name={};
name_str=p.Name(name,tabela_elementy_tabelowe_name);
value_str=p.Value(value,tabela_elementy_tabelowe);
table.insert(tabela_elementy_tabelowe,{name,value});
else
local tabela_elementy_tabelowe_name={};
name_str=p.Name(name,tabela_elementy_tabelowe_name);
value_str=tostring(name_tab);
end;
else
local tabela_elementy_tabelowe_name={};
name_str=p.Name(name,tabela_elementy_tabelowe_name);
value_str=p.Value(value,tabela_elementy_tabelowe);
end;
if(not czy_liczba)then
local tabela_elementy_tabelowe_name={};
str=str..name_str.." = "..value_str..",";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..value_str..",";
else
str=str.."["..name_str.."]".." = "..value_str..",";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.PozycjaZmienna(name,value)
local tabela_elementy_tabelowe_name={};
name=p.Name(name,tabela_elementy_tabelowe_name);
local tabela_elementy_tabelowe_value={};
value=p.Value(value,tabela_elementy_tabelowe_value);
local str=name.."="..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
saliqo0j62dfeizztw9xkxuma4iptg0
553863
553862
2026-09-01T17:45:23Z
Persino
2851
553863
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local s={};
local r={};
local g={};
r[1]=g;
g[1]=r;
s[1]={r,g,};
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"s",s,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value,tabela_elementy_tabelowe);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(not parametry_modul.TypeTable(name))then
name=tostring(name);
else
name=p.Table(name,tabela_elementy_tabelowe);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="{";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
--elseif((parametry_modul.TypeTable(a))and(parametry_modul.TypeTable(b)))then
--local i1=0;for name1,value1 in pairs(a)do i1=i1+1;end;
--local i2=0;for name2,value2 in pairs(b)do i2=i2+1;end;
--return (i1<i2);
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str;local value_str;
if(parametry_modul.TypeTable(value))then
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe)do
if(b[2]==value)then
name_tab=b[1];
break;
end;
end;
if(not name_tab)then
table.insert(tabela_elementy_tabelowe,{name,value});
local tabela_elementy_tabelowe_name={};
name_str=p.Name(name,tabela_elementy_tabelowe_name);
value_str=p.Value(value,tabela_elementy_tabelowe);
else
local tabela_elementy_tabelowe_name={};
name_str=p.Name(name,tabela_elementy_tabelowe_name);
value_str=tostring(value);
end;
else
local tabela_elementy_tabelowe_name={};
name_str=p.Name(name,tabela_elementy_tabelowe_name);
value_str=p.Value(value,tabela_elementy_tabelowe);
end;
if(not czy_liczba)then
local tabela_elementy_tabelowe_name={};
str=str..name_str.." = "..value_str..",";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..value_str..",";
else
str=str..name_str.." = "..value_str..",";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.PozycjaZmienna(name,value)
local tabela_elementy_tabelowe_name={};
name=p.Name(name,tabela_elementy_tabelowe_name);
local tabela_elementy_tabelowe_value={};
value=p.Value(value,tabela_elementy_tabelowe_value);
local str=name.."="..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
6ev07gphik59jv5lt953nv2brcglhh9
553864
553863
2026-09-01T18:07:53Z
Persino
2851
553864
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value,tabela_elementy_tabelowe);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(not parametry_modul.TypeTable(name))then
name=tostring(name);
else
name=p.Table(name,tabela_elementy_tabelowe);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
--elseif((parametry_modul.TypeTable(a))and(parametry_modul.TypeTable(b)))then
--local i1=0;for name1,value1 in pairs(a)do i1=i1+1;end;
--local i2=0;for name2,value2 in pairs(b)do i2=i2+1;end;
--return (i1<i2);
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str;local value_str;
local str_tabelka="";
if(parametry_modul.TypeTable(value))then
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe)do
if(b[2]==value)then
name_tab=b[3];
break;
end;
end;
if(not name_tab)then
str_tabelka="tabelka"..(#tabela_elementy_tabelowe+1).."#";
table.insert(tabela_elementy_tabelowe,{name,value,str_tabelka,});
local tabela_elementy_tabelowe_name={};
name_str=p.Name(name,tabela_elementy_tabelowe_name);
value_str=p.Value(value,tabela_elementy_tabelowe);
else
local tabela_elementy_tabelowe_name={};
name_str=p.Name(name,tabela_elementy_tabelowe_name);
value_str=tostring(name_tab);
end;
else
local tabela_elementy_tabelowe_name={};
name_str=p.Name(name,tabela_elementy_tabelowe_name);
value_str=p.Value(value,tabela_elementy_tabelowe);
end;
if(not czy_liczba)then
local tabela_elementy_tabelowe_name={};
str=str..name_str.." = "..str_tabelka..value_str..",\n";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..str_tabelka..value_str..",\n";
else
str=str..name_str.." = "..str_tabelka..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.PozycjaZmienna(name,value)
local tabela_elementy_tabelowe_name={};
name=p.Name(name,tabela_elementy_tabelowe_name);
local tabela_elementy_tabelowe_value={};
value=p.Value(value,tabela_elementy_tabelowe_value);
local str=name.."="..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
ffnc0koa5wsr1ye1jgza0w4yzse21np
553865
553864
2026-09-01T18:42:00Z
Persino
2851
553865
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value,tabela_elementy_tabelowe);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(parametry_modul.TypeTable(name))then
name=p.Table(name,tabela_elementy_tabelowe);
elseif(parametry_modul.TypeFunction(name))then
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja="";
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_tabelka,});
end;
str_funkcja=tab_ile or (str_funkcja..tostring(name));
return str_funkcja;
else
name=tostring(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,co,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[co])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
--elseif((parametry_modul.TypeTable(a))and(parametry_modul.TypeTable(b)))then
--local i1=0;for name1,value1 in pairs(a)do i1=i1+1;end;
--local i2=0;for name2,value2 in pairs(b)do i2=i2+1;end;
--return (i1<i2);
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str;local value_str;
local str_tabelka_funkcja="";
if(parametry_modul.TypeTable(value))then
local name_tab=p.JakiElement(tabela_elementy_tabelowe,"tabela",value);
if(not name_tab)then
str_tabelka_funkcja="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja,});
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=tostring(name_tab);
end;
elseif(parametry_modul.TypeFunction(value))then
name_str=p.Name(name,tabela_elementy_tabelowe);
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja;
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_funkcja,});
end;
value_str=tab_ile or (str_funkcja..tostring(value));
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
end;
if(not czy_liczba)then
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..str_tabelka_funkcja..value_str..",\n";
else
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.PozycjaZmienna(name,value)
local tabela_elementy_tabelowe={tabela={},funkcja={},};
name=p.Name(name,tabela_elementy_tabelowe);
value=p.Value(value,tabela_elementy_tabelowe);
local str=name.."="..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
gxjnsda1idzudhv3ojrcql0sp0cjltr
553867
553865
2026-09-01T18:53:53Z
Persino
2851
553867
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value,tabela_elementy_tabelowe);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(parametry_modul.TypeTable(name))then
name=p.Table(name,tabela_elementy_tabelowe);
elseif(parametry_modul.TypeFunction(name))then
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja="";
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_tabelka,});
end;
str_funkcja=tab_ile or (str_funkcja..tostring(name));
return str_funkcja;
else
name=tostring(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,co,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[co])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
--elseif((parametry_modul.TypeTable(a))and(parametry_modul.TypeTable(b)))then
--local i1=0;for name1,value1 in pairs(a)do i1=i1+1;end;
--local i2=0;for name2,value2 in pairs(b)do i2=i2+1;end;
--return (i1<i2);
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str;local value_str;
local str_tabelka_funkcja="";
if(parametry_modul.TypeTable(value))then
local name_tab=p.JakiElement(tabela_elementy_tabelowe,"tabela",value);
if(not name_tab)then
str_tabelka_funkcja="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja,});
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=tostring(name_tab);
end;
elseif(parametry_modul.TypeFunction(value))then
name_str=p.Name(name,tabela_elementy_tabelowe);
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja;
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_funkcja,});
end;
value_str=tab_ile or (str_funkcja..tostring(value));
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
end;
if(not czy_liczba)then
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..str_tabelka_funkcja..value_str..",\n";
else
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_tabelka_funkcja_name="";
if(parametry_modul.TypeTable(name))then
str_tabelka_funkcja_name="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{name,str_tabelka_funkcja_name,});
end;
name=p.Name(name,tabela_elementy_tabelowe);
local str_tabelka_funkcja_value="";
if(parametry_modul.TypeTable(value))then
str_tabelka_funkcja_value="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja_value,});
end;
value=p.Value(value,tabela_elementy_tabelowe);
local str=str_tabelka_funkcja_name..name.."="..str_tabelka_funkcja_value..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
074tazzqze8tv9d3fkrux6fszaay6l4
553871
553867
2026-09-01T19:24:47Z
Persino
2851
553871
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value,tabela_elementy_tabelowe);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(parametry_modul.TypeTable(name))then
name=p.Table(name,tabela_elementy_tabelowe);
elseif(parametry_modul.TypeFunction(name))then
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja="";
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_tabelka,});
end;
str_funkcja=tab_ile or (str_funkcja..tostring(name));
return str_funkcja;
else
name=tostring(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,co,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[co])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
--elseif((parametry_modul.TypeTable(a))and(parametry_modul.TypeTable(b)))then
--local i1=0;for name1,value1 in pairs(a)do i1=i1+1;end;
--local i2=0;for name2,value2 in pairs(b)do i2=i2+1;end;
--return (i1<i2);
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str;local value_str;
local str_tabelka_funkcja="";
if(parametry_modul.TypeTable(value))then
local name_tab=p.JakiElement(tabela_elementy_tabelowe,"tabela",value);
if(not name_tab)then
str_tabelka_funkcja="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja,});
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=tostring(name_tab);
end;
elseif(parametry_modul.TypeFunction(value))then
name_str=p.Name(name,tabela_elementy_tabelowe);
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja;
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_funkcja,});
end;
value_str=tab_ile or (str_funkcja..tostring(value));
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
end;
if(not czy_liczba)then
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
else
if(name==pokolei+1)then
pokolei=pokolei+1;
str=str..str_tabelka_funkcja..value_str..",\n";
else
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_tabelka_funkcja_name;
if(parametry_modul.TypeTable(name))then
str_tabelka_funkcja_name="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{name,str_tabelka_funkcja_name,});
end;
name=p.Name(name,tabela_elementy_tabelowe);
name=str_tabelka_funkcja_name and p.FormatowanieTabelki(name,0) or name;
local str_tabelka_funkcja_value;
if(parametry_modul.TypeTable(value))then
str_tabelka_funkcja_value="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja_value,});
end;
value=p.Value(value,tabela_elementy_tabelowe);
value=str_tabelka_funkcja_value and p.FormatowanieTabelki(value,0) or value;
local str=(str_tabelka_funkcja_name or "")..name.."="..(str_tabelka_funkcja_value or "")..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
m5hxh24jnka8umartrbdrrught48l57
553872
553871
2026-09-01T19:43:40Z
Persino
2851
553872
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value,tabela_elementy_tabelowe);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(parametry_modul.TypeTable(name))then
name=p.Table(name,tabela_elementy_tabelowe);
elseif(parametry_modul.TypeFunction(name))then
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja="";
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_tabelka,});
end;
str_funkcja=tab_ile or (str_funkcja..tostring(name));
return str_funkcja;
else
name=tostring(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,co,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[co])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
--elseif((parametry_modul.TypeTable(a))and(parametry_modul.TypeTable(b)))then
--local i1=0;for name1,value1 in pairs(a)do i1=i1+1;end;
--local i2=0;for name2,value2 in pairs(b)do i2=i2+1;end;
--return (i1<i2);
end;
end
);
for name,value in __next,tabelka,nil do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str;local value_str;
local str_tabelka_funkcja="";
if(parametry_modul.TypeTable(value))then
local name_tab=p.JakiElement(tabela_elementy_tabelowe,"tabela",value);
if(not name_tab)then
str_tabelka_funkcja="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja,});
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=tostring(name_tab);
end;
elseif(parametry_modul.TypeFunction(value))then
name_str=p.Name(name,tabela_elementy_tabelowe);
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja;
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_funkcja,});
end;
value_str=tab_ile or (str_funkcja..tostring(value));
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
end;
if(not czy_liczba)then
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..str_tabelka_funkcja..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_tabelka_funkcja_name;
if(parametry_modul.TypeTable(name))then
str_tabelka_funkcja_name="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{name,str_tabelka_funkcja_name,});
end;
name=p.Name(name,tabela_elementy_tabelowe);
name=str_tabelka_funkcja_name and p.FormatowanieTabelki(name,0) or name;
local str_tabelka_funkcja_value;
if(parametry_modul.TypeTable(value))then
str_tabelka_funkcja_value="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja_value,});
end;
value=p.Value(value,tabela_elementy_tabelowe);
value=str_tabelka_funkcja_value and p.FormatowanieTabelki(value,0) or value;
local str=(str_tabelka_funkcja_name or "")..name.."="..(str_tabelka_funkcja_value or "")..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
pvu8hovr73s3gy0s84u3xnbxadlw9sc
553873
553872
2026-09-01T20:12:57Z
Persino
2851
553873
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value,tabela_elementy_tabelowe);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(parametry_modul.TypeTable(name))then
name=p.Table(name,tabela_elementy_tabelowe);
elseif(parametry_modul.TypeFunction(name))then
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja="";
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_tabelka,});
end;
str_funkcja=tab_ile or (str_funkcja..tostring(name));
return str_funkcja;
else
name=tostring(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,co,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[co])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
--local __metatable=getmetatable(tabelka)
for name,value in p.Iter(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str;local value_str;
local str_tabelka_funkcja="";
if(parametry_modul.TypeTable(value))then
local name_tab=p.JakiElement(tabela_elementy_tabelowe,"tabela",value);
if(not name_tab)then
str_tabelka_funkcja="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja,});
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=tostring(name_tab);
end;
elseif(parametry_modul.TypeFunction(value))then
name_str=p.Name(name,tabela_elementy_tabelowe);
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja;
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_funkcja,});
end;
value_str=tab_ile or (str_funkcja..tostring(value));
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
end;
if(not czy_liczba)then
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..str_tabelka_funkcja..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_tabelka_funkcja_name;
if(parametry_modul.TypeTable(name))then
str_tabelka_funkcja_name="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{name,str_tabelka_funkcja_name,});
end;
name=p.Name(name,tabela_elementy_tabelowe);
name=str_tabelka_funkcja_name and p.FormatowanieTabelki(name,0) or name;
local str_tabelka_funkcja_value;
if(parametry_modul.TypeTable(value))then
str_tabelka_funkcja_value="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja_value,});
end;
value=p.Value(value,tabela_elementy_tabelowe);
value=str_tabelka_funkcja_value and p.FormatowanieTabelki(value,0) or value;
local str=(str_tabelka_funkcja_name or "")..name.."="..(str_tabelka_funkcja_value or "")..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
mu0ps2ixqv37r3k0qhjbgkrlay6a3zz
553874
553873
2026-09-01T20:20:25Z
Persino
2851
553874
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value,tabela_elementy_tabelowe);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(parametry_modul.TypeTable(name))then
name=p.Table(name,tabela_elementy_tabelowe);
elseif(parametry_modul.TypeFunction(name))then
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja="";
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_tabelka,});
end;
str_funkcja=tab_ile or (str_funkcja..tostring(name));
return str_funkcja;
else
name=tostring(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,co,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[co])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str;local value_str;
local str_tabelka_funkcja="";
if(parametry_modul.TypeTable(value))then
local name_tab=p.JakiElement(tabela_elementy_tabelowe,"tabela",value);
if(not name_tab)then
str_tabelka_funkcja="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja,});
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=tostring(name_tab);
end;
elseif(parametry_modul.TypeFunction(value))then
name_str=p.Name(name,tabela_elementy_tabelowe);
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja;
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_funkcja,});
end;
value_str=tab_ile or (str_funkcja..tostring(value));
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
end;
if(not czy_liczba)then
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..str_tabelka_funkcja..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_tabelka_funkcja_name;
if(parametry_modul.TypeTable(name))then
str_tabelka_funkcja_name="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{name,str_tabelka_funkcja_name,});
end;
name=p.Name(name,tabela_elementy_tabelowe);
name=str_tabelka_funkcja_name and p.FormatowanieTabelki(name,0) or name;
local str_tabelka_funkcja_value;
if(parametry_modul.TypeTable(value))then
str_tabelka_funkcja_value="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja_value,});
end;
value=p.Value(value,tabela_elementy_tabelowe);
value=str_tabelka_funkcja_value and p.FormatowanieTabelki(value,0) or value;
local str=(str_tabelka_funkcja_name or "")..name.."="..(str_tabelka_funkcja_value or "")..value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
eze36woya576wkj4k74xb3q6q4y9qis
553875
553874
2026-09-01T21:36:24Z
Persino
2851
553875
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(value))then
if(not parametry_modul.TypeTable(value))then
value=tostring(value);
else
value=p.Table(value,tabela_elementy_tabelowe);
end;
else
value=p.String(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeString(name))then
if(parametry_modul.TypeTable(name))then
name=p.Table(name,tabela_elementy_tabelowe);
elseif(parametry_modul.TypeFunction(name))then
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja="";
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_tabelka,});
end;
str_funkcja=tab_ile or (str_funkcja..tostring(name));
return str_funkcja;
else
name=tostring(name);
end;
name="["..name.."]";
else
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
end;
return name;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,co,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[co])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str;local value_str;
local str_tabelka_funkcja="";
if(parametry_modul.TypeTable(value))then
local name_tab=p.JakiElement(tabela_elementy_tabelowe,"tabela",value);
if(not name_tab)then
str_tabelka_funkcja="tabelka"..(#(tabela_elementy_tabelowe.tabela)+1).."#";
table.insert(tabela_elementy_tabelowe.tabela,{value,str_tabelka_funkcja,});
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=tostring(name_tab);
end;
elseif(parametry_modul.TypeFunction(value))then
name_str=p.Name(name,tabela_elementy_tabelowe);
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,"funkcja",value);
local str_funkcja;
if(not tab_ile)then
str_funkcja="funkcja"..(#(tabela_elementy_tabelowe.funkcja)+1).."#";
table.insert(tabela_elementy_tabelowe.funkcja,{value,str_funkcja,});
end;
value_str=tab_ile or (str_funkcja..tostring(value));
else
name_str=p.Name(name,tabela_elementy_tabelowe);
value_str=p.Value(value,tabela_elementy_tabelowe);
end;
if(not czy_liczba)then
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..str_tabelka_funkcja..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..str_tabelka_funkcja..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_name=p.Name(name,tabela_elementy_tabelowe);
str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name;
local str_value=p.Value(value,tabela_elementy_tabelowe);
str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value;
local str=str_name.."="..str_value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
bqdj2m8bc8umnr6x28qtk2h9v9k0tkw
553876
553875
2026-09-01T22:17:32Z
Persino
2851
553876
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value)
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value);
local str_element="";
if(not tab_ile)then
str_element="funkcja"..(#(tabela_elementy_tabelowe[element])+1).."#";
table.insert(tabela_elementy_tabelowe[element],{value,str_element,});
end;
str_element=tab_ile or (str_element..tostring(value))
return str_element,tab_ile;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(value))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe);
end;
return str_funkcja;
elseif(parametry_modul.TypeFunction(value))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value);
return str_funkcja;
elseif(parametry_modul.TypeString(value))then
value=p.String(value);
else
value=tostring(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(name))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",name);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(name,tabela_elementy_tabelowe);
end;
return "["..str_funkcja.."]";
elseif(parametry_modul.TypeFunction(name))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",name,1);
return "["..str_funkcja.."]";
elseif(parametry_modul.TypeString(name))then
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
return name;
else
name=tostring(name);
name="["..name.."]";
return name;
end;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,element,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[element])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str=p.Name(name,tabela_elementy_tabelowe);
local value_str=p.Value(value,tabela_elementy_tabelowe);
if(not czy_liczba)then
str=str..name_str.." = "..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_name=p.Name(name,tabela_elementy_tabelowe);
str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name;
local str_value=p.Value(value,tabela_elementy_tabelowe);
str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value;
local str=str_name.."="..str_value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
dembjg3vfathrjbq7noawus96hrik7k
553877
553876
2026-09-01T22:19:25Z
Persino
2851
553877
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value)
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value);
local str_element="";
if(not tab_ile)then
str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#";
table.insert(tabela_elementy_tabelowe[element],{value,str_element,});
end;
str_element=tab_ile or (str_element..tostring(value))
return str_element,tab_ile;
end;
function p.Value(value,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(value))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe);
end;
return str_funkcja;
elseif(parametry_modul.TypeFunction(value))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value);
return str_funkcja;
elseif(parametry_modul.TypeString(value))then
value=p.String(value);
else
value=tostring(value);
end;
return value;
end;
function p.Name(name,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(name))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",name);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(name,tabela_elementy_tabelowe);
end;
return "["..str_funkcja.."]";
elseif(parametry_modul.TypeFunction(name))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",name,1);
return "["..str_funkcja.."]";
elseif(parametry_modul.TypeString(name))then
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
if(not czy_dobrze)then
name=p.String(name,true);
return "[\""..name.."\"]";
end;
return name;
else
name=tostring(name);
name="["..name.."]";
return name;
end;
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,element,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[element])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str=p.Name(name,tabela_elementy_tabelowe);
local value_str=p.Value(value,tabela_elementy_tabelowe);
if(not czy_liczba)then
str=str..name_str.." = "..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_name=p.Name(name,tabela_elementy_tabelowe);
str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name;
local str_value=p.Value(value,tabela_elementy_tabelowe);
str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value;
local str=str_name.."="..str_value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
2hkrytzbbv7yl0fzsfooa75p4p3e7xe
553878
553877
2026-09-02T07:17:15Z
Persino
2851
553878
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value)
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value);
local str_element="";
if(not tab_ile)then
str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#";
table.insert(tabela_elementy_tabelowe[element],{value,str_element,});
end;
str_element=tab_ile or (str_element..tostring(value))
return str_element,tab_ile;
end;
function p.NameValue(value,tabela_elementy_tabelowe,funkcja,funkcja2)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(value))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe);
end;
str_funkcja=funkcja and funkcja(str_funkcja,"table") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeFunction(value))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value);
str_funkcja=funkcja and funkcja(str_funkcja,"function") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeString(value))then
local czy_dobrze=funkcja2 and funkcja2(value) or nil;
if(not czy_dobrze)then
value=p.String(value);
value=funkcja and funkcja(value,"String") or value;
end;
return value;
else
local value=tostring(value);
value=funkcja and funkcja(value) or value;
return value;
end;
end;
function p.Value(value,tabela_elementy_tabelowe)
return p.NameValue(value,tabela_elementy_tabelowe,
function(value,__type)
return nil;
end,
function(value)
return nil;
end
);
end;
function p.Name(name,tabela_elementy_tabelowe)
return p.NameValue(name,tabela_elementy_tabelowe,
function(name,__type)
return "["..name.."]";
end,
function(name)
return string.match(name,"^[%a_][%w_]*$");
end
);
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,element,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[element])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str=p.Name(name,tabela_elementy_tabelowe);
local value_str=p.Value(value,tabela_elementy_tabelowe);
if(not czy_liczba)then
str=str..name_str.." = "..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_name=p.Name(name,tabela_elementy_tabelowe);
str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name;
local str_value=p.Value(value,tabela_elementy_tabelowe);
str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value;
local str=str_name.."="..str_value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
hplwq71efp6r8ief3y19mvl13io7587
553879
553878
2026-09-02T07:21:37Z
Persino
2851
553879
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value)
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value);
local str_element="";
if(not tab_ile)then
str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#";
table.insert(tabela_elementy_tabelowe[element],{value,str_element,});
end;
str_element=tab_ile or (str_element..tostring(value))
return str_element,tab_ile;
end;
function p.NameValue(value,tabela_elementy_tabelowe,funkcja,funkcja2)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(value))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe);
end;
str_funkcja=funkcja and funkcja(str_funkcja,"table") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeFunction(value))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value);
str_funkcja=funkcja and funkcja(str_funkcja,"function") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeString(value))then
local czy_dobrze=funkcja2 and funkcja2(value) or nil;
if(not czy_dobrze)then
value=p.String(value);
value=funkcja and funkcja(value,"String") or value;
end;
return value;
else
local value=tostring(value);
value=funkcja and funkcja(value) or value;
return value;
end;
end;
function p.Value(value,tabela_elementy_tabelowe)
return p.NameValue(value,tabela_elementy_tabelowe,
function(value,__type)
return nil;
end,
function(value)
return nil;
end
);
end;
function p.Name(name,tabela_elementy_tabelowe)
return p.NameValue(name,tabela_elementy_tabelowe,
function(name,__type)
return "["..name.."]";
end,
function(name)
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
return czy_dobrze;
end
);
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,element,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[element])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str=p.Name(name,tabela_elementy_tabelowe);
local value_str=p.Value(value,tabela_elementy_tabelowe);
if(not czy_liczba)then
str=str..name_str.." = "..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_name=p.Name(name,tabela_elementy_tabelowe);
str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name;
local str_value=p.Value(value,tabela_elementy_tabelowe);
str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value;
local str=str_name.."="..str_value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
2o4cq5vhe31lynuldjunixp3v9fnjtv
553880
553879
2026-09-02T07:30:30Z
Persino
2851
Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/ŹródłoLua]] do [[Moduł:ŹródłoLua]]
553879
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value)
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value);
local str_element="";
if(not tab_ile)then
str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#";
table.insert(tabela_elementy_tabelowe[element],{value,str_element,});
end;
str_element=tab_ile or (str_element..tostring(value))
return str_element,tab_ile;
end;
function p.NameValue(value,tabela_elementy_tabelowe,funkcja,funkcja2)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(value))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe);
end;
str_funkcja=funkcja and funkcja(str_funkcja,"table") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeFunction(value))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value);
str_funkcja=funkcja and funkcja(str_funkcja,"function") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeString(value))then
local czy_dobrze=funkcja2 and funkcja2(value) or nil;
if(not czy_dobrze)then
value=p.String(value);
value=funkcja and funkcja(value,"String") or value;
end;
return value;
else
local value=tostring(value);
value=funkcja and funkcja(value) or value;
return value;
end;
end;
function p.Value(value,tabela_elementy_tabelowe)
return p.NameValue(value,tabela_elementy_tabelowe,
function(value,__type)
return nil;
end,
function(value)
return nil;
end
);
end;
function p.Name(name,tabela_elementy_tabelowe)
return p.NameValue(name,tabela_elementy_tabelowe,
function(name,__type)
return "["..name.."]";
end,
function(name)
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
return czy_dobrze;
end
);
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,element,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[element])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str=p.Name(name,tabela_elementy_tabelowe);
local value_str=p.Value(value,tabela_elementy_tabelowe);
if(not czy_liczba)then
str=str..name_str.." = "..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_name=p.Name(name,tabela_elementy_tabelowe);
str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name;
local str_value=p.Value(value,tabela_elementy_tabelowe);
str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value;
local str=str_name.."="..str_value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
2o4cq5vhe31lynuldjunixp3v9fnjtv
553886
553880
2026-09-02T07:35:43Z
Persino
2851
553886
Scribunto
text/plain
require("strict");
local p={};
function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value)
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value);
local str_element="";
if(not tab_ile)then
str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#";
table.insert(tabela_elementy_tabelowe[element],{value,str_element,});
end;
str_element=tab_ile or (str_element..tostring(value))
return str_element,tab_ile;
end;
function p.NameValue(value,tabela_elementy_tabelowe,funkcja,funkcja2)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(value))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe);
end;
str_funkcja=funkcja and funkcja(str_funkcja,"table") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeFunction(value))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value);
str_funkcja=funkcja and funkcja(str_funkcja,"function") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeString(value))then
local czy_dobrze=funkcja2 and funkcja2(value) or nil;
if(not czy_dobrze)then
value=p.String(value);
value=funkcja and funkcja(value,"String") or value;
end;
return value;
else
local value=tostring(value);
value=funkcja and funkcja(value) or value;
return value;
end;
end;
function p.Value(value,tabela_elementy_tabelowe)
return p.NameValue(value,tabela_elementy_tabelowe,
function(value,__type)
return nil;
end,
function(value)
return nil;
end
);
end;
function p.Name(name,tabela_elementy_tabelowe)
return p.NameValue(name,tabela_elementy_tabelowe,
function(name,__type)
return "["..name.."]";
end,
function(name)
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
return czy_dobrze;
end
);
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,element,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[element])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str=p.Name(name,tabela_elementy_tabelowe);
local value_str=p.Value(value,tabela_elementy_tabelowe);
if(not czy_liczba)then
str=str..name_str.." = "..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_name=p.Name(name,tabela_elementy_tabelowe);
str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name;
local str_value=p.Value(value,tabela_elementy_tabelowe);
str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value;
local str=str_name.."="..str_value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
0uoh6cnmpaypnajb9k480om88kmqidj
553942
553886
2026-09-02T09:04:49Z
Persino
2851
553942
Scribunto
text/plain
require("strict");
local p={};
function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value)
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value);
local str_element="";
if(not tab_ile)then
str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#";
table.insert(tabela_elementy_tabelowe[element],{value,str_element,});
end;
str_element=tab_ile or (str_element..tostring(value))
return str_element,tab_ile;
end;
function p.NameValue(value,tabela_elementy_tabelowe,funkcja,funkcja2)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(value))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe);
end;
str_funkcja=funkcja and funkcja(str_funkcja,"table") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeFunction(value))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value);
str_funkcja=funkcja and funkcja(str_funkcja,"function") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeString(value))then
local czy_dobrze=funkcja2 and funkcja2(value) or nil;
if(not czy_dobrze)then
value=p.String(value);
value=funkcja and funkcja(value,"string") or value;
end;
return value;
else
local value=tostring(value);
value=funkcja and funkcja(value,type(value)) or value;
return value;
end;
end;
function p.Value(value,tabela_elementy_tabelowe)
return p.NameValue(value,tabela_elementy_tabelowe,
function(value,__type)
return nil;
end,
function(value)
return nil;
end
);
end;
function p.Name(name,tabela_elementy_tabelowe)
return p.NameValue(name,tabela_elementy_tabelowe,
function(name,__type)
return "["..name.."]";
end,
function(name)
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
return czy_dobrze;
end
);
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,element,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[element])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str=p.Name(name,tabela_elementy_tabelowe);
local value_str=p.Value(value,tabela_elementy_tabelowe);
if(not czy_liczba)then
str=str..name_str.." = "..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_name=p.Name(name,tabela_elementy_tabelowe);
str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name;
local str_value=p.Value(value,tabela_elementy_tabelowe);
str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value;
local str=str_name.."="..str_value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
ig6ssm656prkhm1p65pmuiuqd24hq8h
553943
553942
2026-09-02T09:05:44Z
Persino
2851
553943
Scribunto
text/plain
require("strict");
local p={};
function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value)
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value);
local str_element="";
if(not tab_ile)then
str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#";
table.insert(tabela_elementy_tabelowe[element],{value,str_element,});
end;
str_element=tab_ile or (str_element..tostring(value))
return str_element,tab_ile;
end;
function p.NameValue(value,tabela_elementy_tabelowe,funkcja,funkcja2)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(value))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe);
end;
str_funkcja=funkcja and funkcja(str_funkcja,"table") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeFunction(value))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value);
str_funkcja=funkcja and funkcja(str_funkcja,"function") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeString(value))then
local czy_dobrze=funkcja2 and funkcja2(value,"string") or nil;
if(not czy_dobrze)then
value=p.String(value);
value=funkcja and funkcja(value,"string") or value;
end;
return value;
else
local value=tostring(value);
value=funkcja and funkcja(value,type(value)) or value;
return value;
end;
end;
function p.Value(value,tabela_elementy_tabelowe)
return p.NameValue(value,tabela_elementy_tabelowe,
function(value,__type)
return nil;
end,
function(value)
return nil;
end
);
end;
function p.Name(name,tabela_elementy_tabelowe)
return p.NameValue(name,tabela_elementy_tabelowe,
function(name,__type)
return "["..name.."]";
end,
function(name)
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
return czy_dobrze;
end
);
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,element,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[element])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str=p.Name(name,tabela_elementy_tabelowe);
local value_str=p.Value(value,tabela_elementy_tabelowe);
if(not czy_liczba)then
str=str..name_str.." = "..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_name=p.Name(name,tabela_elementy_tabelowe);
str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name;
local str_value=p.Value(value,tabela_elementy_tabelowe);
str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value;
local str=str_name.."="..str_value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
2wpwedss9lrwf6gc8vkahei3mg4wr5w
553944
553943
2026-09-02T09:09:21Z
Persino
2851
553944
Scribunto
text/plain
require("strict");
local p={};
function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value)
local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value);
local str_element="";
if(not tab_ile)then
str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#";
table.insert(tabela_elementy_tabelowe[element],{value,str_element,});
end;
str_element=tab_ile or (str_element..tostring(value))
return str_element,tab_ile;
end;
function p.NameValue(value,tabela_elementy_tabelowe,funkcja,funkcja2)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(value))then
local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value);
if(not tab_ile)then
str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe);
end;
str_funkcja=funkcja and funkcja(str_funkcja,"table") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeFunction(value))then
local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value);
str_funkcja=funkcja and funkcja(str_funkcja,"function") or str_funkcja;
return str_funkcja;
elseif(parametry_modul.TypeString(value))then
local czy_dobrze=funkcja2 and funkcja2(value,"string") or nil;
if(not czy_dobrze)then
value=p.String(value);
value=funkcja and funkcja(value,"string") or value;
end;
return value;
else
local value=tostring(value);
value=funkcja and funkcja(value,type(value)) or value;
return value;
end;
end;
function p.Value(value,tabela_elementy_tabelowe)
return p.NameValue(value,tabela_elementy_tabelowe,
function(value)
return nil;
end,
function(value)
return nil;
end
);
end;
function p.Name(name,tabela_elementy_tabelowe)
return p.NameValue(name,tabela_elementy_tabelowe,
function(name)
return "["..name.."]";
end,
function(name)
local czy_dobrze=string.match(name,"^[%a_][%w_]*$");
return czy_dobrze;
end
);
end;
function p.String(value,czy_w_cudzyslowy)
value=mw.ustring.gsub(value,"\\","\\\\");
value=mw.ustring.gsub(value,"\"","\\\"");
local tab={
{"\n","\\n",},
{"\t","\\t",},
{"\r","\\r",},
{"\b","\\b",},
{"\v","\\v",},
{"\f","\\f",},
{"\a","\\a",},
{"\0","\\0",},
};
for _,tab_element in ipairs(tab)do
value=mw.ustring.gsub(value,tab_element[1],tab_element[2]);
end;
if(not czy_w_cudzyslowy)then value="\""..value.."\"";end;
return value;
end;
function p.JakiElement(tabela_elementy_tabelowe,element,value)
local name_tab=nil;
for a,b in ipairs(tabela_elementy_tabelowe[element])do
if(b[1]==value)then
name_tab=b[2];
break;
end;
end;
return name_tab;
end;
function p.Iter(tabelka)
local parametry_modul=require("Module:Parametry");
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,
function(a,b)
if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then
return (a<b);
elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then
return (a<b);
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then
local a=a and 1 or 0;local b=b and 1 or 0;
return (a<b);
elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then
return true;
elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then
return true;
elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then
return false;
elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then
return false;
end;
end
);
return __next,tabelka,nil;
end;
function p.Pairs(tabelka)
local __metatable=getmetatable(tabelka);
if(__metatable)then
return pairs(tabelka);
else
return p.Iter(tabelka);
end;
end;
function p.Table(tabelka,tabela_elementy_tabelowe)
local parametry_modul=require("Module:Parametry");
local str="\n{\n";
local pokolei=0;
local function WyswietlanieTable(tabelka,czy_liczba)
local pokolei=0;
for name,value in p.Pairs(tabelka) do
if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then
local name_str=p.Name(name,tabela_elementy_tabelowe);
local value_str=p.Value(value,tabela_elementy_tabelowe);
if(not czy_liczba)then
str=str..name_str.." = "..value_str..",\n";
else
if((pokolei)and(name==pokolei+1))then
pokolei=pokolei+1;
str=str..value_str..",\n";
else
pokolei=nil;
str=str..name_str.." = "..value_str..",\n";
end;
end;
end;
end;
end;
WyswietlanieTable(tabelka,true);
WyswietlanieTable(tabelka,false);
str=str.."}";
return str;
end;
function p.FormatowanieTabelki(str_tabela,ile_dodane)
local ile_klamerek=ile_dodane or 0;
local szeregi_modul=require("Module:Szeregi");
str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela,
function(linia)
local spacje;
if(mw.ustring.match(linia,"^{"))then
spacje=mw.ustring.rep(" ",ile_klamerek*4);
ile_klamerek=ile_klamerek+1;
elseif(mw.ustring.match(linia,"^}"))then
ile_klamerek=ile_klamerek-1;
spacje=mw.ustring.rep(" ",ile_klamerek*4);
else
spacje=mw.ustring.rep(" ",ile_klamerek*4);
end;
return (spacje or "")..linia;
end);
return str_tabela;
end;
function p.PozycjaZmienna(name,value)
local parametry_modul=require("Module:Parametry");
local tabela_elementy_tabelowe={tabela={},funkcja={},};
local str_name=p.Name(name,tabela_elementy_tabelowe);
str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name;
local str_value=p.Value(value,tabela_elementy_tabelowe);
str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value;
local str=str_name.."="..str_value..";";
return str;
end;
p["ŹródłoLua"]=function(frame,args)
local str="";
for _,__value in ipairs(args)do
local name=__value[1];
local value=__value[2];
local pozycja_zmienna=p.PozycjaZmienna(name,value);
str=str..((str~="")and "\n" or "")..pozycja_zmienna;
end;
local tab_znak={
["="]="{{=}}",
["|"]="{{!}}",
["{"]="{{(}}",
["}"]="{{)}}",
["["]="{{!(}}",
["]"]="{{)!}}",
};
str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak)
return tab_znak[znak] or znak;
end)
str="{{ŹródłoLua|"..str.."}}";
local wikikod=frame:preprocess{text=str,};
return wikikod;
end;
return p;
54gt2pv26ms0mrw68zlgs4ik5rug5zl
Moduł:Wikibooks/Przykład/ŹródłoLua/ŹródłoLua/Kod 1/opis
828
64050
553882
553745
2026-09-02T07:30:30Z
Persino
2851
Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/ŹródłoLua/opis]] do [[Moduł:ŹródłoLua/opis]]
553745
wikitext
text/x-wiki
== Opis ==
Funkcja w module do prezentacji wyników parametrów o pewnych nazwach i ich wartościach.
== Użycie ==
Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŹródłoLua"]=function(frame,args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} {{Patrz|frame}} - tablica ramki funkcji tablicy transportu modułu,
* {{Code|args}} - pewna tablica z parametrami nazwanymi.
: Parametr {{Code|frame}} {{LinkPatrz|frame}} służy do rozwijania szablonu podświetlania składni {{s|ŹródłoLua}}, na podstawie funkcji, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, takiej: {{LzLua|frame:preprocess}}.
== Przykład ==
; Przykład{{dk}}
* {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}}
; Wynik{{dk}}
{{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}.
Wyniki użyte w tym przykładzie w tej ramce, są zbudowane na kodzie zmiennych w funkcji: {{Code|{{m|Wikibooks/Przykład/ŹródłoLua|Przykład|subnazwa=tak}}}}, z modułu: {{m|Wikibooks/Przykład/ŹródłoLua}}.
== Zobacz też ==
* {{s|ŹródłoLua}} - szablon do wyświetlania kodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zbudowany w oparciu o: {{s|ŹródłoKodu}}.
* {{s|ŹródłoKodu}} - ogólny szablon kombajn do wyświetlania, jednego z wielu języków programowania, kodu z podświetlaniem składni. Szablon wykorzystuje znacznik mechanizmu {{NS|l=tak|w=tak|k=mw}} o postaci: {{Tag|syntaxhighlight|parametry=lang="..."}}.
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}}
</includeonly>
gr5tuzyzmzrfc4n1i8voaqwqdnduxp1
553887
553882
2026-09-02T07:37:20Z
Persino
2851
Persino przeniósł(-osła) stronę [[Moduł:ŹródłoLua/opis]] do [[Moduł:Wikibooks/Przykład/ŹródłoLua/opis]], bez pozostawienia przekierowania pod starym tytułem
553745
wikitext
text/x-wiki
== Opis ==
Funkcja w module do prezentacji wyników parametrów o pewnych nazwach i ich wartościach.
== Użycie ==
Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŹródłoLua"]=function(frame,args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} {{Patrz|frame}} - tablica ramki funkcji tablicy transportu modułu,
* {{Code|args}} - pewna tablica z parametrami nazwanymi.
: Parametr {{Code|frame}} {{LinkPatrz|frame}} służy do rozwijania szablonu podświetlania składni {{s|ŹródłoLua}}, na podstawie funkcji, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, takiej: {{LzLua|frame:preprocess}}.
== Przykład ==
; Przykład{{dk}}
* {{m|Wikibooks/Przykład/ŹródłoLua|Przykład}}
; Wynik{{dk}}
{{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}.
Wyniki użyte w tym przykładzie w tej ramce, są zbudowane na kodzie zmiennych w funkcji: {{Code|{{m|Wikibooks/Przykład/ŹródłoLua|Przykład|subnazwa=tak}}}}, z modułu: {{m|Wikibooks/Przykład/ŹródłoLua}}.
== Zobacz też ==
* {{s|ŹródłoLua}} - szablon do wyświetlania kodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zbudowany w oparciu o: {{s|ŹródłoKodu}}.
* {{s|ŹródłoKodu}} - ogólny szablon kombajn do wyświetlania, jednego z wielu języków programowania, kodu z podświetlaniem składni. Szablon wykorzystuje znacznik mechanizmu {{NS|l=tak|w=tak|k=mw}} o postaci: {{Tag|syntaxhighlight|parametry=lang="..."}}.
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, moduły Lua w Scribunto, przykładów stron projektu}}
</includeonly>
gr5tuzyzmzrfc4n1i8voaqwqdnduxp1
553946
553887
2026-09-02T09:15:35Z
Persino
2851
UWAGA! Zastąpienie treści hasła bardzo krótkim tekstem: „; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}.”
553946
wikitext
text/x-wiki
; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}}
{{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}.
i42koemfrp9736xo00d0m9ciqm2tcbm
553950
553946
2026-09-02T09:18:51Z
Persino
2851
Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/ŹródłoLua/opis]] do [[Moduł:Wikibooks/Przykład/ŹródłoLua/ŹródłoLua/Kod 1/opis]]
553946
wikitext
text/x-wiki
; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}}
{{#invoke:Wikibooks/Przykład/ŹródłoLua|Przykład}}.
i42koemfrp9736xo00d0m9ciqm2tcbm
553952
553950
2026-09-02T09:21:28Z
Persino
2851
553952
wikitext
text/x-wiki
; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}}
{{#invoke:Wikibooks/Przykład/ŹródłoLua/ŹródłoLua/Kod 1|Przykład}}.
m9onblvuta23ldbc0mmc8ydy2vf4h47
Moduł:Wikibooks/Przykład/Html/EncodeHtml/Kod 2
828
64105
553902
553784
2026-09-02T08:07:27Z
Persino
2851
553902
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
local html_modul=require("Module:Html");
-- Tekst do zakodowania;
local parametr="a%YTbc___?action=edit;";
-- Tekst zostanie uznany za niezakodowany, czy on ma znaki "%", czyli on to posiada;
local parametr2=html_modul.EncodeHtml(parametr,true,false,false);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"parametr",parametr,},
{"parametr2",parametr2,},
});
return wikikod;
end;
return p;
7h08s4l1d9nhlup5ux23g0vm80v6spl
Śpiewnik/Mesyjasz przyszedł na świat prawdziwy
0
64107
553866
2026-09-01T18:49:35Z
Ashaio
4702
nowa kolęda
553866
wikitext
text/x-wiki
{{T|Śpiewnik/NawigacjaOpis}}
== Opis ==
Ks. Michał Marcin Mioduszewski, wydając w 1838 roku ''Śpiewnik kościelny'', zamieścił w nim krótszą wersję tej kolędy, widoczną poniżej. Pełniejsza wersja, o 12 strofach, trafiła do jego zbioru ''Pastorałki i kolędy z melodyjami'', wydanego w 1843 roku. W przedmowie do ''Pastorałek i kolęd'' ks. Mioduszewski pisał:
{{Cytat| Nie są to pieśni do użycia kościelnego, i owszem baczność XX. Plebanów powinna im tam wstępu zabraniać; ale są to piosnki wesołe i niewinne ludu w czasie świąt Bożego narodzenia po domach śpiewane. (...) Jakkolwiek poezja ich jest gminna, albo jak mówią kantyczkowa i myśli pospolite, a zaledwoby małą część wybrać można lepszych; malują one jednak charakter, zwyczaje i sposób wyrażenia się naszych prostych rolników.}}
== Muzyka ==
'''Autor:''' nieznany
'''Opracowanie:''' Michał M. Mioduszewski
<score raw="1" vorbis="1">
\version "2.19.0"
\header{
title = "Mesyjasz przyszedł na świat prawdziwy"
poet = "Słowa: autor nieznany"
composer = "Muzyka: autor nieznany"
arranger = "Opracowanie: Michał M. Mioduszewski"
tagline = ""
}
melodia = {
\new Staff \with {midiInstrument = "cello" } {
\relative c' { \clef treble
\key f \major
\autoBeamOff
\repeat volta 2 {
\stemDown a'4 g8 a bes4 bes |
a8 c bes g a2 | \break
}
\repeat volta 2 {
c4 c8 c d c bes a |
bes4 bes8 bes c bes a g | \break
a4 a bes8 a g4 |
a2. r4 \bar ":|."
}
}
}
\addlyrics { \small {
Mes -- sy -- jasz przy -- szedł na świat praw -- dzi -- wy,
Któ -- ry przez swo -- je zna -- ki,
Dał wo -- dzie win -- ne sma -- ki,
W_Ka -- nie Ga -- li -- lej -- skiej.
} }
\addlyrics { \small {
I Pro -- rok za -- cny z_wiel -- kie -- mi dzi -- wy,
} }
}
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{ \tempo 4 = 110}
}
</score>
'''Źródło:''' Na podstawie: Michał M. Mioduszewski, ''[https://polona.pl/item-view/6190cd88-870d-45b3-a3d8-bf244326c967?page=45 Śpiewnik kościelny czyli pieśni nabożne z melodjami : w kościele katolickim używane a dla wygody kościołów parafijalnych]''. Kraków, 1838. S. 40 (pieśń VIII). Klucz tenorowy zamieniony na wiolinowy, melodia podniesiona o oktawę.
== Tekst ==
'''Autor:''' nieznany
'''Opracowanie:''' Michał M. Mioduszewski
{{Kolumny|2|
<poem>
1. Messyasz przyszedł na świat prawdziwy,
I Prorok zacny z wielkiemi dziwy,
Który przez swoje znaki,
Dał wodzie winne smaki,
W Kanie Galilejskiej.
2. Wesele bardzo zacne sprawiono,
Pana Jezusa na nie proszono,
I zwolenników Jego,
By strzegli Pana swego,
W Kanie Galilejskiej.
3. Z wielkim dostatkiem potrawy noszą,
Pana Jezusa, aby jadł proszą:
Wszystkiego dosyć mają,
Tylko wina czekają,
W Kanie Galilejskiej.
4. Matka zaś Jego, gdy to ujrzała,
Oblubieńcowi dogodzić chciała,
Prosiła swego Syna,
By uczynił z wody wina,
W Kanie Galilejskiej.
5. Pan Jezus chcąc tem uszlachcić gody,
Kazał nanosić dostatkiem wody.
Hej gody, gody, gody!
Wnet będzie wino z wody
W Kanie Galilejskiej.
6. Wnet prawdziwego Boga poznali,
Gdy zamiast wody wino czerpali,
Hej wino, wino, wino!
Lepsze niż przedtem było,
W Kanie Galilejskiej.
7. Przez narodzenie Twojego Syna,
Każ nam nalewać Panienko wina!
Hej, wina, wina, wina!
U tak dobrego Pana,
W Królestwie niebieskiem.
</poem>
}}
'''Źródło:''' Michał M. Mioduszewski, ''[https://polona.pl/item-view/6190cd88-870d-45b3-a3d8-bf244326c967?page=45 Śpiewnik kościelny czyli pieśni nabożne z melodjami : w kościele katolickim używane a dla wygody kościołów parafijalnych]''. Kraków, 1838. S. 40 (pieśń VIII).
== Zobacz też ==
{{Wikiźródła|Śpiewnik_kościelny/Messyjasz_przyszedł_na_świat_prawdziwy|Śpiewnik kościelny/Messyjasz przyszedł na świat prawdziwy}}
{{Wikiźródła|Pastorałki_i_kolędy/Messyjasz_przyszedł_na_świat_prawdziwy|Pastorałki i kolędy/Messyjasz przyszedł na świat prawdziwy}}
{{Wikiźródła|Mesyasz_przyszedł_na_świat_(kolęda)|Mesyasz przyszedł na świat (kolęda)}}
* ''[https://bibliotekapiosenki.pl/utwory/Mesyasz_przyszedl Mesyasz przyszedł]'' w serwisie ''[https://bibliotekapiosenki.pl/ Cyfrowa Biblioteka Polskiej Piosenki]''
* ''[https://spiewniksiedleckiego.pl/?page_id=419 Pastorałki]'' w serwisie ''https://spiewniksiedleckiego.pl/?page_id=419 Śpiewnik ks. Siedleckiego]''
dw2hqg3jgkm88li7dq2thck3mmkylcs
553870
553866
2026-09-01T19:04:19Z
Ashaio
4702
dr tech., link
553870
wikitext
text/x-wiki
{{T|Śpiewnik/NawigacjaOpis}}
== Opis ==
Ks. Michał Marcin Mioduszewski, wydając w 1838 roku ''Śpiewnik kościelny'', zamieścił w nim krótszą wersję tej kolędy, widoczną poniżej. [[Śpiewnik/Mesyjasz_przyszedł_na_świat_prawdziwy/Tekst|Pełniejsza wersja]], o 12 strofach, trafiła do jego zbioru ''Pastorałki i kolędy z melodyjami'', wydanego w 1843 roku. W przedmowie do ''Pastorałek i kolęd'' ks. Mioduszewski pisał:
{{Cytat| Nie są to pieśni do użycia kościelnego, i owszem baczność XX. Plebanów powinna im tam wstępu zabraniać; ale są to piosnki wesołe i niewinne ludu w czasie świąt Bożego narodzenia po domach śpiewane. (...) Jakkolwiek poezja ich jest gminna, albo jak mówią kantyczkowa i myśli pospolite, a zaledwoby małą część wybrać można lepszych; malują one jednak charakter, zwyczaje i sposób wyrażenia się naszych prostych rolników.}}
== Muzyka ==
'''Autor:''' nieznany
'''Opracowanie:''' Michał M. Mioduszewski
<score raw="1" vorbis="1">
\version "2.19.0"
\header{
title = "Mesyjasz przyszedł na świat prawdziwy"
poet = "Słowa: autor nieznany"
composer = "Muzyka: autor nieznany"
arranger = "Opracowanie: Michał M. Mioduszewski"
tagline = ""
}
melodia = {
\new Staff \with {midiInstrument = "cello" } {
\relative c' { \clef treble
\key f \major
\autoBeamOff
\repeat volta 2 {
\stemDown a'4 g8 a bes4 bes |
a8 c bes g a2 | \break
}
\repeat volta 2 {
c4 c8 c d c bes a |
bes4 bes8 bes c bes a g | \break
a4 a bes8 a g4 |
a2. r4 \bar ":|."
}
}
}
\addlyrics { \small {
Mes -- sy -- jasz przy -- szedł na świat praw -- dzi -- wy,
Któ -- ry przez swo -- je zna -- ki,
Dał wo -- dzie win -- ne sma -- ki,
W_Ka -- nie Ga -- li -- lej -- skiej.
} }
\addlyrics { \small {
I Pro -- rok za -- cny z_wiel -- kie -- mi dzi -- wy,
} }
}
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{ \tempo 4 = 110}
}
</score>
'''Źródło:''' Na podstawie: Michał M. Mioduszewski, ''[https://polona.pl/item-view/6190cd88-870d-45b3-a3d8-bf244326c967?page=45 Śpiewnik kościelny czyli pieśni nabożne z melodjami : w kościele katolickim używane a dla wygody kościołów parafijalnych]''. Kraków, 1838. S. 40 (pieśń VIII). Klucz tenorowy zamieniony na wiolinowy, melodia podniesiona o oktawę.
== Tekst ==
'''Autor:''' nieznany
'''Opracowanie:''' Michał M. Mioduszewski
{{Kolumny|2|
<poem>
1. Messyasz przyszedł na świat prawdziwy,
I Prorok zacny z wielkiemi dziwy,
Który przez swoje znaki,
Dał wodzie winne smaki,
W Kanie Galilejskiej.
2. Wesele bardzo zacne sprawiono,
Pana Jezusa na nie proszono,
I zwolenników Jego,
By strzegli Pana swego,
W Kanie Galilejskiej.
3. Z wielkim dostatkiem potrawy noszą,
Pana Jezusa, aby jadł proszą:
Wszystkiego dosyć mają,
Tylko wina czekają,
W Kanie Galilejskiej.
4. Matka zaś Jego, gdy to ujrzała,
Oblubieńcowi dogodzić chciała,
Prosiła swego Syna,
By uczynił z wody wina,
W Kanie Galilejskiej.
5. Pan Jezus chcąc tem uszlachcić gody,
Kazał nanosić dostatkiem wody.
Hej gody, gody, gody!
Wnet będzie wino z wody
W Kanie Galilejskiej.
6. Wnet prawdziwego Boga poznali,
Gdy zamiast wody wino czerpali,
Hej wino, wino, wino!
Lepsze niż przedtem było,
W Kanie Galilejskiej.
7. Przez narodzenie Twojego Syna,
Każ nam nalewać Panienko wina!
Hej, wina, wina, wina!
U tak dobrego Pana,
W Królestwie niebieskiem.
</poem>
}}
'''Źródło:''' Michał M. Mioduszewski, ''[https://polona.pl/item-view/6190cd88-870d-45b3-a3d8-bf244326c967?page=45 Śpiewnik kościelny czyli pieśni nabożne z melodjami : w kościele katolickim używane a dla wygody kościołów parafijalnych]''. Kraków, 1838. S. 40 (pieśń VIII).
== Zobacz też ==
{{Wikiźródła|Śpiewnik_kościelny/Messyjasz_przyszedł_na_świat_prawdziwy|Śpiewnik kościelny/Messyjasz przyszedł na świat prawdziwy}}
{{Wikiźródła|Pastorałki_i_kolędy/Messyjasz_przyszedł_na_świat_prawdziwy|Pastorałki i kolędy/Messyjasz przyszedł na świat prawdziwy}}
{{Wikiźródła|Mesyasz_przyszedł_na_świat_(kolęda)|Mesyasz przyszedł na świat (kolęda)}}
* ''[https://bibliotekapiosenki.pl/utwory/Mesyasz_przyszedl Mesyasz przyszedł]'' w serwisie ''[https://bibliotekapiosenki.pl/ Cyfrowa Biblioteka Polskiej Piosenki]''
* ''[https://spiewniksiedleckiego.pl/?page_id=419 Pastorałki]'' w serwisie ''https://spiewniksiedleckiego.pl/?page_id=419 Śpiewnik ks. Siedleckiego]''
2s8w32pyw7ypln9fs6by3wj8ybe77ug
Śpiewnik/Mesyjasz przyszedł na świat prawdziwy/Tekst
0
64108
553868
2026-09-01T18:55:51Z
Ashaio
4702
nowa strona z tekstem pieśni
553868
wikitext
text/x-wiki
{{T|Śpiewnik/NawigacjaTekst}}
== Tekst z 1843 ==
'''Autor:''' nieznany
'''Opracowanie:''' Michał M. Mioduszewski
{{Kolumny|2|
<poem>
1. Messyasz przyszedł na świat prawdziwy,
I Prorok zacny z wielkiemi dziwy,
Który przez swoje znaki,
Dał wodzie winne smaki,
W Kanie Galilejskiej.
2. Wesele bardzo zacne sprawiono,
Pana Jezusa na nie proszono,
I zwolenników Jego,
By strzegli Pana swego,
W Kanie Galilejskiej.
3. Z wielkim dostatkiem potrawy noszą,
Pana Jezusa, aby jadł proszą:
Wszystkiego dosyć mają,
Tylko wina czekają,
W Kanie Galilejskiej.
4. Matka zaś Jego, gdy to ujrzała,
Oblubieńcowi dogodzić chciała,
Prosiła swego Syna,
By uczynił z wody wina,
W Kanie Galilejskiej.
5. Pan Jezus chcąc tem uszlachcić gody,
Kazał nanosić dostatkiem wody.
Hej gody, gody, gody!
Wnet będzie wino z wody
W Kanie Galilejskiej.
6. Wnet prawdziwego Boga poznali,
Gdy zamiast wody wino czerpali,
Hej wino, wino, wino!
Lepsze niż przedtem było,
W Kanie Galilejskiej.
7. Najświętsza Panna gdy skosztowała,
Z pełnego sobie nalać kazała:
Hej wina, wina, wina!
Będę ja dzisiaj piła,
W Kanie Galilejskiej.
8. Piotr z Apostoły stojąc przy dzbanie,
Woła na Jana pij rychło do mnie:
Hej wino, wino, wino!
Lepsze niż przedtem było,
W Kanie Galilejskiej.
9. Pił Szymon garcem do Mateusza,
Filip konewką do Tadeusza:
Hej wino, wino, wino!
Lepsze niż przedtem było,
W Kanie Galilejskiej.
10. Gdy Jakób mniejszy, porwał garnuszek.
Judasz Tadeusz nalał kieliszek:
Hej wino, wino, wino!
Lepsze niż przedtem było,
W Kanie Galilejskiej.
11. Pawle z Maciejem wam oskomina,
Żeście nie pili takiego wina:
Hej wino, wino, wino!
Lepsze niż przedtem było,
W Kanie Galilejskiej.
12. Przez narodzenie twojego Syna,
Każ nam nalewać Panienko wina!
Hej wina, wina, wina!
U tak dobrego Pana,
W Królestwie niebieskiem.
</poem>
}}
'''Źródło:''' Michał M. Mioduszewski, ''[https://polona.pl/item-view/19b79c54-0969-4344-8f5f-43ceb641cd34?page=97 Pastorałki i kolędy z melodyjami : czyli Piosnki wesołe ludu w czasie świąt Bożego Narodzenia po domach śpiewane a przez X. M. M. M. zebrane]''. Kraków, 1843. S. 94 (pieśń 44).
kftbnc7c9y83qlom02s7g3bvx59w0jp
Śpiewnik/Mesyjasz przyszedł na świat prawdziwy/Muzyka
0
64109
553869
2026-09-01T18:59:48Z
Ashaio
4702
nowa strona z melodią
553869
wikitext
text/x-wiki
{{T|Śpiewnik/NawigacjaMuzyka}}
== Muzyka z 1930 ==
'''Autor:''' niezanany
'''Aranżacja:''' Franciszek Barański
<score raw="1" vorbis="1">
\version "2.19.0"
\header{
title = "Mesyjasz przyszedł na świat prawdziwy"
tagline = ""
}
global = {
\key g \major
\time 4/4
\autoBeamOff
}
melodia = {
\new PianoStaff %\with { instrumentName = "Piano" }
<<
\new Staff = "RH" \relative g'{
\clef treble
\global
<g b >4 <fis a>8 <g b> <a c>4 <a c> |
<b d>8 <b d> <a c> <a c> <g b>4 r |
<g b>4 <fis a>8 <g b d> <a c>4 <a c> |
<b d>8 <b d> <a c> <a c> <g b>4 r |
\repeat volta 2 {
<b d>4 <b d>8 <b d> <c e> <b d> <a c> <g b> |
<a c>4 <a c>8 <c e> <b d> <a c> < g b> <fis a> |
<d g>4 <g b> <a c>8 <g b> <fis a>4 |
}
\alternative {
{ <g b>4 r r2 | }
{ <g d b>4 r r2 \bar "|." }
}
}
\addlyrics{ \small {
Me -- sy -- jasz przy -- szedł na świat pra -- wdzi -- wy
i pro -- rok za -- cny z_wiel -- kie -- mi dzi -- wy,
Któ -- ry przez swo -- je zna -- ki
dał wo -- dzie win -- ne sma -- ki
w_Ka -- nie ga -- li -- lej -- skiej.
skiej.
} }
\new Staff = "LH" {
\clef bass
\global
g,4 <d g b> d <fis a d'> |
d <fis a d'> <g, d> <d g b> |
g, <d g b> d <fis a d'> |
d <fis a d'> g, <d g b> |
\repeat volta 2 {
<g, g> <g b> b, <g b> |
d <fis a d'> d <fis a d'> |
g, <g b> d <fis a d'> |
}
\alternative {
{<g, g> <fis a d'> g, <fis a d'> |}
{<g, g> r r2 \bar "|."}
}
}
>>
}
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{ \tempo 4=120 }
}
</score>
'''Źródło:''' Franciszek Barański, ''[https://polona.pl/item-view/2b4444d7-d5b6-41df-a82f-66b61ccab2b1?page=34 W dzień Bożego Narodzenia : kolędy]''. Warszawa, [ca 1910]. S. 35 (pieśń 50).
dzef46xf6oowvwhfvdrs870481rnfnb
Moduł:Wikibooks/Przykład/ŹródłoLua/ŹródłoLua/Kod 1
828
64110
553881
2026-09-02T07:30:30Z
Persino
2851
Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/ŹródłoLua]] do [[Moduł:ŹródłoLua]]
553881
Scribunto
text/plain
return require [[Moduł:ŹródłoLua]]
3mcxhf70mqrof0wvpvg83pbc0geaw27
553884
553881
2026-09-02T07:34:27Z
Persino
2851
Usunięto przekierowanie do [[Moduł:ŹródłoLua]]
553884
Scribunto
text/plain
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
local zrodlolua_modul=require("Module:ŹródłoModułu");
for name,value in pairs(zrodlolua_modul)do
p[name]=value;
end;
return p;
4imonjze287rt57yd105o3eljov6hc3
553885
553884
2026-09-02T07:34:53Z
Persino
2851
553885
Scribunto
text/plain
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local wikikod=p["ŹródłoLua"](frame,args);
return wikikod;
end;
local zrodlolua_modul=require("Module:ŹródłoLua");
for name,value in pairs(zrodlolua_modul)do
p[name]=value;
end;
return p;
0fpaqec4dp2ytflxf6y76ridmz01oru
553893
553885
2026-09-02T07:56:26Z
Persino
2851
553893
Scribunto
text/plain
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,args);
return wikikod;
end;
return p;
k92koudtmy5tpnwmrsllgw640yukym5
553948
553893
2026-09-02T09:18:51Z
Persino
2851
Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/ŹródłoLua]] do [[Moduł:Wikibooks/Przykład/ŹródłoLua/ŹródłoLua/Kod 1]]
553893
Scribunto
text/plain
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
{"mw",mw,},
};
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,args);
return wikikod;
end;
return p;
k92koudtmy5tpnwmrsllgw640yukym5
553953
553948
2026-09-02T09:23:17Z
Persino
2851
553953
Scribunto
text/plain
local p={};
p["Przykład"]=function(frame)
local args={
{"argument_1","wartość1",},
{"argument_2","wartość2",},
{"argument_3","wartość3",},
{"argument_4",true,},
{"argument_5",false,},
{"argument_6",nil,},
{"argument_7","zmienna: \"\\\"wartość1\\\", \\\"wartość2\\\"\", a dalej inne",},
{"argument_8","zmienna: \"wartość1, wartość2\", i dalej",},
{"argument_9","\"wartość1, wartość2, wartość3\"",},
{"argument_10",{{"nazwa1","wartość1",},{"nazwa2","wartość2",["nazwa4"]="wartość4",},[5]="wartość3",["nazwa5"]="wartość5",["święto"]=5,},},
{"argument_11",5,},
{"argument_12",-6,},
{"argument_13","zmienna: \\ \\\\, \\\\\\\\, i dalej,",},
{"argument_14","zmienna: \"\"\"\\\"\"\"",},
{"argument_15","\"",},
{"argument_16","zmienna: \\n, i dalej",},
{"argument_17","zmienna: \\\n, i dalej",},
{1,2,},
{true,2,},
{"123abc",2,},
{"abc123",2,},
{"_123",2,},
{"święto",2,},
{"święto123",2,},
{"123święto",2,},
{{{1,1},{2,2,},{3,3,},nazwa2=5,["123"]=8,_123=7,_=9,["święto"]=5,},6,},
{"abc_cde",5,},
{"abc cde",6,},
};
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,args);
return wikikod;
end;
return p;
nh073g3ew3clyagovgaelt5p24y4q5w
Moduł:ŹródłoLua/opis
828
64112
553945
2026-09-02T09:13:33Z
Persino
2851
Utworzono nową stronę „== Opis == Funkcja w module do prezentacji wyników parametrów o pewnych nazwach i ich wartościach. == Użycie == Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŹródłoLua"]=function(frame,args)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} {{Patrz|frame}} - tablica ramk…”
553945
wikitext
text/x-wiki
== Opis ==
Funkcja w module do prezentacji wyników parametrów o pewnych nazwach i ich wartościach.
== Użycie ==
Funkcja służy do wyświetlania w szablonie {{s|ŹródłoLua}} pewnej tabelki o pewnych kluczach i ich wartościach, rozkładając je na czynniki pierwsze.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŹródłoLua"]=function(frame,args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} {{Patrz|frame}} - tablica ramki funkcji tablicy transportu modułu,
* {{Code|args}} - pewna tablica z parametrami nazwanymi.
: Parametr {{Code|frame}} {{LinkPatrz|frame}} służy do rozwijania szablonu podświetlania składni {{s|ŹródłoLua}}, na podstawie funkcji, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, takiej: {{LzLua|frame:preprocess}}.
== Przykład ==
* {{m|Wikibooks/Przykład/ŹródłoLua}}
== Zobacz też ==
* {{s|ŹródłoLua}} - szablon do wyświetlania kodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zbudowany w oparciu o: {{s|ŹródłoKodu}}.
* {{s|ŹródłoKodu}} - ogólny szablon kombajn do wyświetlania, jednego z wielu języków programowania, kodu z podświetlaniem składni. Szablon wykorzystuje znacznik mechanizmu {{NS|l=tak|w=tak|k=mw}} o postaci: {{Tag|syntaxhighlight|parametry=lang="..."}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
</includeonly>
8hzdfoxeckwineotwjoc3yqepff1k4t
Kategoria:Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu/ŹródłoLua
14
64113
553947
2026-09-02T09:17:12Z
Persino
2851
Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu}}”
553947
wikitext
text/x-wiki
{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu}}
b6lz6rtgdy8574elh6cxs9mf0u1nnnm
Moduł:Wikibooks/Przykład/ŹródłoLua/ŹródłoLua/Kod 2
828
64116
553954
2026-09-02T09:24:54Z
Persino
2851
Utworzono nową stronę „local p={}; p["Przykład"]=function(frame) local args={ {"mw",mw,}, } local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,args); return wikikod; end; return p;”
553954
Scribunto
text/plain
local p={};
p["Przykład"]=function(frame)
local args={
{"mw",mw,},
}
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,args);
return wikikod;
end;
return p;
4wk6k0zqqzj9b6qy53fb3f99najwili
Moduł:Wikibooks/Przykład/ŹródłoLua/ŹródłoLua/Kod 2/opis
828
64117
553955
2026-09-02T09:26:19Z
Persino
2851
Utworzono nową stronę „; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/ŹródłoLua/ŹródłoLua/Kod 2|Przykład}}.”
553955
wikitext
text/x-wiki
; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}}
{{#invoke:Wikibooks/Przykład/ŹródłoLua/ŹródłoLua/Kod 2|Przykład}}.
2l3ypf7761tofz64ka336b9yzaaw6rp
Kategoria:Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu/ŹródłoLua
14
64118
553956
2026-09-02T09:35:46Z
Persino
2851
Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu}}”
553956
wikitext
text/x-wiki
{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu}}
37h9jjo3mkpr8t03n0iz5hi6aicw54a