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 = &#124; | komórka 1_3 = {{s|!}} | komórka 2_1 = __!!__ | komórka 2_2 = &#124;&#124; | komórka 2_3 = {{s|!!}} | komórka 3_1 = __(__ | komórka 3_2 = &#123; | komórka 3_3 = {{s|(}} | komórka 4_1 = __((__ | komórka 4_2 = &#123;&#123; | komórka 4_3 = {{s|((}} | komórka 5_1 = __(((__ | komórka 5_2 = &#123;&#123;&#123; | komórka 5_3 = {{s|(((}} | komórka 6_1 = __)__ | komórka 6_2 = &#125; | komórka 6_3 = {{s|)}} | komórka 7_1 = __))__ | komórka 7_2 = &#125;&#125; | komórka 7_3 = {{s|))}} | komórka 8_1 = __)))__ | komórka 8_2 = &#125;&#125;&#125; | komórka 8_3 = {{s|)))}} | komórka 9_1 = __!(__ | komórka 9_2 = &#91; | komórka 9_3 = {{s|!(}} | komórka 10_1 = __!((__ | komórka 10_2 = &#91;&#91; | komórka 10_3 = {{s|!((}} | komórka 11_1 = __)!__ | komórka 11_2 = &#93; | komórka 11_3 = {{s|)!}} | komórka 12_1 = __))!__ | komórka 12_2 = &#93;&#93; | 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&nbsp;+&nbsp;2}}}} → {{Tt|{{Chem|C|n|H|2n&nbsp;+&nbsp;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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;}} </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&section=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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|&num;}}}}. 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|&amp;}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|&num;}}}}. 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&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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|&#8206;}} (znak {{Code|{{Nowiki|&#8206;}}}}). 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|&#8206;}}}} 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|&#8206;}}}}, 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|&lt;}}}}, {{Code|{{Nowiki|&gt;}}}} i {{Code|{{Nowiki|&amp;}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|&#92;&#34;}}}} 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|&num;}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&&num;(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&&num;x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|&num;}}}}, 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|&amp;&num;}}}}. 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|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&amp;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|&#35;}}}} 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|&num;}}}}, {{Code|{{Nowiki|&#35;}}}} i {{Code|{{Nowiki|&#x23;}}}} na {{Code|{{Nowiki|&num;num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|&#35;}}}} kodu {{Code|{{Nowiki|&num;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;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|&num;}}}}. 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|&num;}}}}. 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|&#35}}}}, 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|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, 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|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, 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|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, 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|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, 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|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, 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|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, 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: \"&#35;\""; 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: &#91;&#91;user:użytkownik&#124;&#40;Użytkownik&#41;&#93;&#93;&#46;"; -- 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&section=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 "&#8206;", składający się z trzech bajtów: "&#226;", "&#128;" i "&#142;"; local tekst1="Oto jest znak: &#8206;."; -- 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: \"&#8206;\" i inne_znaki_w_URL: \"https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;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: &quot;&#8206;&quot; i inne_znaki_w_URL: &quot;https://pl.wikibooks.org/w/index.php&#63;title&#61;Szablon:Link wewnętrzny&#38;action&#61;edit&#35;Obsługa;&quot;__"; 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___&#63;action&#61;edit&#38;section&#61;21&#35;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&#38;section&#61;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="&lt;a href=\"/wiki/Strona?tytan1=1&amp;tytan2=2\" id=\"Strona:&#92;&#34;nazwa&#92;&#34;\"&gt;Zawartość znacznika&lt;/a&gt;"; 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: &#x5B;&#x5B;Strona&#124;Nazwa linku&#93;&#x5D;, a w nim spacje niełamliwe&nbsp;i inne znaki: z alfabetu greckiego jak: &alpha;&Alpha;&beta;&Beta;&gamma;&Gamma;&delta;&Delta;&epsilon;&Epsilon;&zeta;&Zeta;&eta;&Eta;&theta;&Theta;&iota;&Iota;&kappa;&Kappa;&lambda;&Lambda;&mu;&Mu;&nu;&Nu;&xi;&Xi;&omicron;&Omicron;&pi;&Pi;&rho;&Rho;&sigma;&Sigma;&tau;&Tau;&upsilon;&Upsilon;&phi;&Phi;&chi;&Chi;&psi;&Psi;&omega;&Omega;"; -- 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&#32;główna&num;&#x23;&#35;To_nie_jest nagłówek?action=edit&section=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&#32;główna&num;&#35;&#x23;To_nie_jest nagłówek","action=edit&section=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&section=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="&num;, &#35; i &#x23;"; -- 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 "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;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 "&num;, &#35; i &#x23;", kolejno na "&amp;num;"; local tekst="&amp;num;, &amp;num; i &amp;num;"; -- Odkodowanie znaków "&amp;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: "&#35;" i "&#x23;" oraz jeden od spacji: "&#32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&#32;główna&#35;&#35;&#x23;To_nie_jest nagłówek?action=edit&section=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: "&&num;35;" i "&&num;x23;" oraz jeden od spacji: "&&num;32;";, a tam "#"zamieniamy na "&num;"; local tekst="https://pl.wikibooks.org/wiki/Strona&&num;32;główna&&num;35;&&num;35;&&num;x23;To_nie_jest nagłówek?action=edit&section=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&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=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&section=2#Nagłówek strony"; local adres12=html_modul.AdresDomniemanieBezProtokolarnyEncodeURL(adres11,true); -- Adres bezprotokonalny; local adres21="//pl.wikibooks.org/wiki/Strona_główna?action=edit&section=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&section=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&section=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&section=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.&nbsp;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.&nbsp;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.&nbsp;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.&nbsp;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.&nbsp;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.&nbsp;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