Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.19 first-letter Media Specjalna Dyskusja Wikipedysta Dyskusja wikipedysty Wikibooks Dyskusja Wikibooks Plik Dyskusja pliku MediaWiki Dyskusja MediaWiki Szablon Dyskusja szablonu Pomoc Dyskusja pomocy Kategoria Dyskusja kategorii Wikijunior Dyskusja Wikijuniora TimedText TimedText talk Moduł Dyskusja modułu Wydarzenie Dyskusja wydarzenia Szablon:StronaStart 10 19820 556232 553381 2026-09-13T19:42:18Z Persino 2851 556232 wikitext text/x-wiki <includeonly><!-- --><templatestyles src="Szablon:StronaStart/szablon-mobilne.css" /><!-- --><templatestyles src="Szablon:StronaStart/szablon-złożone-mobilne.css" /><!-- --><templatestyles src="Szablon:StronaStart/szablon-siatka-mobilna.css" /><!-- --><templatestyles src="Szablon:StronaStart/stronastart.css" /><!-- --><templatestyles src="Szablon:StronaStart/heading.css" /><!-- --><templatestyles src="Szablon:StronaStart/szablon-mobilne-minerva.css" /><!-- --><templatestyles src="Szablon:Link_wewnętrzny/styles.css" /><!-- -->{{#if:{{{formatowanie|}}}|<templatestyles src="Szablon:StronaStart/styles.css" />{{#if:{{{boczne menu|}}}|{{#if:{{{spis treści|TOC}}}{{{wykaz modułów|WYKAZ}}}|<templatestyles src="Szablon:TOC/styles.css" /><templatestyles src="Szablon:TOC_limit/styles.css" />}}}}}}{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|{{Mniejszy}}div class="{{#if:{{{formatowanie|}}}|strona_start_formatowanie}} strona_start ekran mobilne kolumnowy {{#if:{{{format|}}}|format}} tło_strona_start" style="{{#if:{{{format|}}}|font-size:1rem;line-height:1.4em;}}min-width:auto;width:auto;max-width:100%;height:auto;box-sizing:border-box;overflow:hidden;position:relative;clear:both;word-break:break-word;"{{Większy}}{{Mniejszy}}div style="display:flex;flex-direction:column;" class="strona_nadrzędna tło_strona_nadrzędna" {{Większy}}{{#if:{{{podręcznik|tak}}}|{{Podręcznik|styl=order:1;}}}}{{Mniejszy}}div style="order:2;"{{Większy}} {{{nagłówek|}}}{{Mniejszy}}/div{{Większy}}{{Mniejszy}}div style="order:4;"{{Większy}} {{{stopka|}}}{{Mniejszy}}/div{{Większy}}{{Mniejszy}}div class="noprint" class="główna_strona tło_główna_strona" style="order:3;position:relative;top:0px;left:0px;display:flex;flex-direction:row;{{#if:{{{margines zewnętrzny|0}}}|margin:{{{margines zewnętrzny|0}}};}}"{{Większy}}{{#if:{{{boczne menu|}}}|__NOTOC__}}{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}{{{nagłówek prawy|}}}{{{stopka prawa|}}}| <div style="order:1;width:{{{lewa strona|auto}}};box-sizing:border-box;overflow:visible;position:relative;" class="strona_lewa mw-parent-node"><!-- --><div class="nawigacja_boksy" style="height:100%;width:auto;visibility:hidden;flex-direction:column;box-sizing:border-box;z-index:1;left:0"><!-- -->{{#if:{{{nagłówek lewy|}}}|<!-- -->{{Div|klasa=mw-optimal-x nagłówek_lewy|styl=position:absolute;left:0;z-index:2;margin-right:0.3125rem|{{{nagłówek lewy}}}}}<!-- -->}}<!-- --><!--{{Div|styl=position:absolute;height:0%;box-sizing:border-box;}}--><!-- -->{{#if:{{{stopka lewa|}}}|<!-- -->{{Div|klasa=mw-optimal-x stopka_lewa|styl=position:absolute;left:0;z-index:2;margin-right:0.3125rem|{{{stopka lewa}}}}}<!-- -->}}<!-- --> </div><!-- --></div><!-- --><div style="width:{{{prawa strona|100%}}};box-sizing:border-box;order:3;overflow:visible;position:relative;" class="strona_prawa mw-parent-node"><div class="mw-sticky-y toclimit {{#if:{{{limit|}}}|toclimit-{{{limit}}}}} {{#if:{{{formatowanie|}}}|fonty_rodzina_sans {{#if:{{{boczne menu|}}}|fonty_poboczna_kolumna|fonty_toc}}}} spis nawigacja_spis" style="display:flex;flex-direction:column;z-index:2;position:absolute;left:0;top:0;width:{{#if:{{{boczne menu|}}}|43.75rem|auto}};max-width:43.75rem;box-sizing:border-box;{{#if:{{{margines zewnętrzny poboczny|0 0 0 0.3125rem}}}|margin:{{{margines zewnętrzny poboczny|0 0 0 0.3125rem}}};}}{{#if:{{{margines wewnętrzny poboczny|0}}}|padding:{{{margines wewnętrzny poboczny|0}}};}}"><div class="style_strony_{{#if:{{{boczne menu|}}}|bocznego_menu|TOC}}" style="{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{rozmiar czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-size:{{{rozmiar czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{wysokość linii czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|line-height:{{{wysokość linii czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{rodzina czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-family:{{{rodzina czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{wariant czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-variant:{{{wariant czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{rozciągnięcie czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-stretch:{{{rozciągnięcie czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{waga czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-weight:{{{waga czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{styl czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-style:{{{styl czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}};"><!-- -->{{#if:{{{boczne menu|}}}<!-- -->|{{#invoke:StronicowyParser|NazwaLicencjaWykazSpisTreściModułuKsiążki|{{{nazwa modułu|NAZWA MODUŁU}}}|{{{licencja|LICENCJA}}}|{{{wykaz modułów|WYKAZ}}}|{{{spis treści|TOC}}}|rozciągnij=tak|wysokość=100%|bez marginesu dolnego=tak|bez pasków poziomych przewijania=tak}}<!-- -->|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki użytkownika=tak|obsługiwane jednostki brudnopisu projektu=tak|obsługiwane strony jako niebrudnopisowe jednostki programowe=tak|nazwa przestrzeni nazw={{{nazwa przestrzeni nazw|(main)}}}|nazwa jednostki={{{nazwa jednostki|{{#invoke:StronicowyParser|ArtykułSubst|pobierz pełną nazwę artykułu=tak}}}}}|typ jednostki={{{typ jednostki|}}}}}<!-- -->|podręcznik|artykuł|podręcznik dla dzieci|artykuł dla dzieci|podręcznik brudnopisu projektu|artykuł brudnopisu projektu|podręcznik użytkownika|artykuł użytkownika={{#if:{{#invoke:StronicowyParser|CzySpisTreści|artykuł={{msg:NAZWAARTYKUŁUKSIĄŻKI|{{{nazwa przestrzeni nazw|(main)}}}:{{{nazwa jednostki|{{#invoke:StronicowyParser|ArtykułSubst|pobierz pełną nazwę artykułu=tak}}}}}}}|wyspecjalizowana=tak}} |{{Jeśli niepuste|{{#invoke:StronicowyParser|WykazModułówKsiążki|spis książkowy=tak|spis rzeczy=tak|nagłówki=tak|wysokość=100%|szerokość=43.75rem|artykuł={{msg:NAZWAARTYKUŁUKSIĄŻKI|{{{nazwa przestrzeni nazw|(main)}}}:{{{nazwa jednostki|{{#invoke:StronicowyParser|ArtykułSubst|pobierz pełną nazwę artykułu=tak}}}}}}}}}|__NOTOC__{{TOC/silnik|funkcja=PokazanaNiewikitabelowaListaMenu|spis treści=Spis treści|limit={{{limit|}}}|bez dodatkowych sprawdzeń=tak|bez komunikatu błędu=tak|wysokość=100%}}|przed lewy={{Div start|styl=width:43.75rem;display:flex;flex-direction:column;overflow:auto;background-color:white;|klasa=strona_spisu_treści}}{{StronaTytułowa|rozmiar=43.75rem}}__NOTOC__|po lewy={{Div koniec}}}} |{{TOC/silnik|funkcja=PokazanaNiewikitabelowaListaMenu|spis treści=Spis treści|limit={{{limit|}}}|bez dodatkowych sprawdzeń=tak|bez komunikatu błędu=tak|wysokość=100%}} }}<!-- -->|strona szablonu={{TOC/silnik|funkcja=PokazanaNiewikitabelowaListaMenu|spis treści=Spis treści|limit={{{limit|}}}|bez dodatkowych sprawdzeń=tak|bez komunikatu błędu=tak|wysokość=100%}}<!-- | -->|#default=__NOTOC__{{TOC/silnik|funkcja=PokazanaNiewikitabelowaListaMenu|spis treści=Spis treści|limit={{{limit|}}}|bez dodatkowych sprawdzeń=tak|bez komunikatu błędu=tak|wysokość=100%}}<!-- -->}}<!-- -->}}<!-- --></div></div> <!-- --><div class="nawigacja_boksy" style="width:auto;height:100%;visibility:hidden;flex-direction:column;margin-top:0;box-sizing:border-box;z-index:1;right:0"><!-- -->{{#if:{{{nagłówek prawy|}}}|<!-- -->{{Div|klasa=mw-optimal-x nagłówek_prawy|styl=position:absolute;right:0;z-index:2;margin-left:0.3125rem|{{{nagłówek prawy}}}}}<!-- -->}}<!-- --><!--{{Div|styl=position:absolute;height:0%;box-sizing:border-box;}}--><!-- -->{{#if:{{{stopka prawa|}}}|<!-- -->{{Div|klasa=mw-optimal-x stopka_prawa|styl=position:absolute;right:0;z-index:2;margin-left:0.3125rem;|{{{stopka prawa}}}}}<!-- -->}}<!-- --> </div><!-- --></div>}}}}<!-- -->{{Mniejszy}}div style="{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|order:2;}}display:flex;flex-direction:column;max-width:100%;box-sizing:border-box;{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}||{{#if:{{{format|}}}|font-size:1rem;line-height:1.4em;}}}}" class="{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|strona_środkowa tło_strona_środkowa|{{#if:{{{formatowanie|}}}|strona_start_formatowanie}} strona_start mobilne niekolumnowy {{#if:{{{format|}}}|format}} tło_strona_start}}"{{Większy}}<!-- -->{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}||{{#if:{{{podręcznik|tak}}}|{{Podręcznik|styl=order:1;}}}}}}<!-- --><div style="order:2;{{#if:{{{margines wewnętrzny|}}}|padding:{{{margines wewnętrzny|0}}};}}">{{{ {{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|wstęp|nagłówek}}|}}}</div><!-- --><div style="order:5;{{#if:{{{margines wewnętrzny|}}}|padding:{{{margines wewnętrzny|0}}};}}">{{{ {{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|zakończenie|stopka}}|}}}</div><!-- Menu strony -->{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|<div class="menu" style="order:3;display:none;"></div>}}<!-- -->{{Mniejszy}}div id="strona" class="strona print {{#if:{{{formatowanie|}}}|fonty_rodzina_sans fonty_główna_kolumna}} tło_strona" style="{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|clear:both;}}order:4;display:flex;flex-direction:column;position:relative;left:0px;top:0px;{{#if:{{{obramowanie|tak}}}|border: solid #aaa 1px;}}{{Jeśli niepuste|{{{margines zewnętrzny główny|0}}}|przed lewy=margin:|po lewy=;}}{{#ifeq:{{{boczne menu|}}}{{{spis treści|TOC}}}||{{Jeśli niepuste|{{{margines zewnętrzny|0.3125rem 0 0 0}}}|przed lewy=margin:|po lewy=;}}}}{{#if:{{{margines wewnętrzny|0.625rem 0.625rem 0.625rem 0.625rem}}}{{{obramowanie|tak}}}|box-sizing:border-box;}}"{{Większy}}<!-- -->{{Mniejszy}}div class="style_strony" style="{{Jeśli niepuste|{{{czcionka strony|}}}|przed lewy=font:|po lewy=;}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{rozmiar czcionki strony|}}}|przed lewy=font-size:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{wysokość linii czcionki strony|}}}|przed lewy=line-height:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{rodzina czcionki strony|}}}|przed lewy=font-family:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{wariant czcionki strony|}}}|przed lewy=font-variant:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{rozciągnięcie czcionki strony|}}}|przed lewy=font-stretch:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{waga czcionki strony|}}}|przed lewy=font-weight:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{styl czcionki strony|}}}|przed lewy=font-style:|po lewy=;}}}}"{{Większy}}<!-- -->{{Mniejszy}}div id="ciało_kontener" class="ciało_kontener mw-overflow-x tło_ciało_kontener" style="display:flex;flex-direction:column;overflow:auto;width:100%;max-width:-moz-available;max-width:-webkit-fill-available;max-width:stretch;"{{Większy}}<!-- -->{{Mniejszy}}div style="order:1;box-sizing:border-box;flex:0 1 auto;max-width:100%;min-width:{{{minimalna szerokość strony|{{{szerokość strony|51.25rem}}}}}};{{#if:{{{margines wewnętrzny|0 0.625rem}}}|padding:{{{margines wewnętrzny|0 0.625rem}}};}}"{{Większy}}{{{nagłówek strony|}}}{{Mniejszy}}/div{{Większy}}<!-- -->{{Mniejszy}}div style="order:3;box-sizing:border-box;flex:0 1 auto;max-width:100%;min-width:{{{minimalna szerokość strony|{{{szerokość strony|51.25rem}}}}}};{{#if:{{{margines wewnętrzny|0 0.625rem}}}|padding:{{{margines wewnętrzny|0 0.625rem}}};}}"{{Większy}}{{{stopka strony|}}}{{Mniejszy}}/div{{Większy}}<!-- -->{{Mniejszy}}div id="ciało_strona" style="order:2;min-width:{{{minimalna szerokość strony|{{{szerokość strony|51.25rem}}}}}};max-width:{{{maksymalna szerokość strony|{{{szerokość strony|51.25rem}}}}}};width:{{{szerokość strony|51.25rem}}};height:{{{wysokość strony|100%}}};{{#if:{{{pasek przewijania|hidden}}}|overflow-x:{{{pasek przewijania|hidden}}};overflow-y:clip;}}{{Jeśli niepuste|{{{margines wewnętrzny|0.625rem}}}|przed lewy=padding:|po lewy=;}}box-sizing:border-box;" class="ciało_strona tło_ciało_strona"{{Większy}}<!-- --></includeonly><noinclude>{{Dokumentacja}}</noinclude> 8ek40b9sidl9u32g944njy8mwag55h2 556238 556232 2026-09-13T19:59:23Z Persino 2851 556238 wikitext text/x-wiki <includeonly><!-- --><templatestyles src="Szablon:StronaStart/szablon-mobilne.css" /><!-- --><templatestyles src="Szablon:StronaStart/szablon-złożone-mobilne.css" /><!-- --><templatestyles src="Szablon:StronaStart/szablon-siatka-mobilna.css" /><!-- --><templatestyles src="Szablon:StronaStart/stronastart.css" /><!-- --><templatestyles src="Szablon:StronaStart/heading.css" /><!-- --><templatestyles src="Szablon:StronaStart/styl-strony.css" /><!-- --><templatestyles src="Szablon:StronaStart/szablon-mobilne-minerva.css" /><!-- --><templatestyles src="Szablon:Link_wewnętrzny/styles.css" /><!-- -->{{#if:{{{formatowanie|}}}|<templatestyles src="Szablon:StronaStart/styles.css" />{{#if:{{{boczne menu|}}}|{{#if:{{{spis treści|TOC}}}{{{wykaz modułów|WYKAZ}}}|<templatestyles src="Szablon:TOC/styles.css" /><templatestyles src="Szablon:TOC_limit/styles.css" />}}}}}}{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|{{Mniejszy}}div class="{{#if:{{{formatowanie|}}}|strona_start_formatowanie}} strona_start ekran mobilne kolumnowy {{#if:{{{format|}}}|format}} tło_strona_start" style="{{#if:{{{format|}}}|font-size:1rem;line-height:1.4em;}}min-width:auto;width:auto;max-width:100%;height:auto;box-sizing:border-box;overflow:hidden;position:relative;clear:both;word-break:break-word;"{{Większy}}{{Mniejszy}}div style="display:flex;flex-direction:column;" class="strona_nadrzędna tło_strona_nadrzędna" {{Większy}}{{#if:{{{podręcznik|tak}}}|{{Podręcznik|styl=order:1;}}}}{{Mniejszy}}div style="order:2;"{{Większy}} {{{nagłówek|}}}{{Mniejszy}}/div{{Większy}}{{Mniejszy}}div style="order:4;"{{Większy}} {{{stopka|}}}{{Mniejszy}}/div{{Większy}}{{Mniejszy}}div class="noprint" class="główna_strona tło_główna_strona" style="order:3;position:relative;top:0px;left:0px;display:flex;flex-direction:row;{{#if:{{{margines zewnętrzny|0}}}|margin:{{{margines zewnętrzny|0}}};}}"{{Większy}}{{#if:{{{boczne menu|}}}|__NOTOC__}}{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}{{{nagłówek prawy|}}}{{{stopka prawa|}}}| <div style="order:1;width:{{{lewa strona|auto}}};box-sizing:border-box;overflow:visible;position:relative;" class="strona_lewa mw-parent-node"><!-- --><div class="nawigacja_boksy" style="height:100%;width:auto;visibility:hidden;flex-direction:column;box-sizing:border-box;z-index:1;left:0"><!-- -->{{#if:{{{nagłówek lewy|}}}|<!-- -->{{Div|klasa=mw-optimal-x nagłówek_lewy|styl=position:absolute;left:0;z-index:2;margin-right:0.3125rem|{{{nagłówek lewy}}}}}<!-- -->}}<!-- --><!--{{Div|styl=position:absolute;height:0%;box-sizing:border-box;}}--><!-- -->{{#if:{{{stopka lewa|}}}|<!-- -->{{Div|klasa=mw-optimal-x stopka_lewa|styl=position:absolute;left:0;z-index:2;margin-right:0.3125rem|{{{stopka lewa}}}}}<!-- -->}}<!-- --> </div><!-- --></div><!-- --><div style="width:{{{prawa strona|100%}}};box-sizing:border-box;order:3;overflow:visible;position:relative;" class="strona_prawa mw-parent-node"><div class="mw-sticky-y toclimit {{#if:{{{limit|}}}|toclimit-{{{limit}}}}} {{#if:{{{formatowanie|}}}|fonty_rodzina_sans {{#if:{{{boczne menu|}}}|fonty_poboczna_kolumna|fonty_toc}}}} spis nawigacja_spis" style="display:flex;flex-direction:column;z-index:2;position:absolute;left:0;top:0;width:{{#if:{{{boczne menu|}}}|43.75rem|auto}};max-width:43.75rem;box-sizing:border-box;{{#if:{{{margines zewnętrzny poboczny|0 0 0 0.3125rem}}}|margin:{{{margines zewnętrzny poboczny|0 0 0 0.3125rem}}};}}{{#if:{{{margines wewnętrzny poboczny|0}}}|padding:{{{margines wewnętrzny poboczny|0}}};}}"><div class="style_strony_{{#if:{{{boczne menu|}}}|bocznego_menu|TOC}}" style="{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{rozmiar czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-size:{{{rozmiar czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{wysokość linii czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|line-height:{{{wysokość linii czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{rodzina czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-family:{{{rodzina czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{wariant czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-variant:{{{wariant czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{rozciągnięcie czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-stretch:{{{rozciągnięcie czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{waga czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-weight:{{{waga czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}}{{#if:{{{czcionka {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}||{{#if:{{{styl czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}}|font-style:{{{styl czcionki {{#if:{{{boczne menu|}}}|bocznego menu|TOC}}|}}};}}}};"><!-- -->{{#if:{{{boczne menu|}}}<!-- -->|{{#invoke:StronicowyParser|NazwaLicencjaWykazSpisTreściModułuKsiążki|{{{nazwa modułu|NAZWA MODUŁU}}}|{{{licencja|LICENCJA}}}|{{{wykaz modułów|WYKAZ}}}|{{{spis treści|TOC}}}|rozciągnij=tak|wysokość=100%|bez marginesu dolnego=tak|bez pasków poziomych przewijania=tak}}<!-- -->|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki użytkownika=tak|obsługiwane jednostki brudnopisu projektu=tak|obsługiwane strony jako niebrudnopisowe jednostki programowe=tak|nazwa przestrzeni nazw={{{nazwa przestrzeni nazw|(main)}}}|nazwa jednostki={{{nazwa jednostki|{{#invoke:StronicowyParser|ArtykułSubst|pobierz pełną nazwę artykułu=tak}}}}}|typ jednostki={{{typ jednostki|}}}}}<!-- -->|podręcznik|artykuł|podręcznik dla dzieci|artykuł dla dzieci|podręcznik brudnopisu projektu|artykuł brudnopisu projektu|podręcznik użytkownika|artykuł użytkownika={{#if:{{#invoke:StronicowyParser|CzySpisTreści|artykuł={{msg:NAZWAARTYKUŁUKSIĄŻKI|{{{nazwa przestrzeni nazw|(main)}}}:{{{nazwa jednostki|{{#invoke:StronicowyParser|ArtykułSubst|pobierz pełną nazwę artykułu=tak}}}}}}}|wyspecjalizowana=tak}} |{{Jeśli niepuste|{{#invoke:StronicowyParser|WykazModułówKsiążki|spis książkowy=tak|spis rzeczy=tak|nagłówki=tak|wysokość=100%|szerokość=43.75rem|artykuł={{msg:NAZWAARTYKUŁUKSIĄŻKI|{{{nazwa przestrzeni nazw|(main)}}}:{{{nazwa jednostki|{{#invoke:StronicowyParser|ArtykułSubst|pobierz pełną nazwę artykułu=tak}}}}}}}}}|__NOTOC__{{TOC/silnik|funkcja=PokazanaNiewikitabelowaListaMenu|spis treści=Spis treści|limit={{{limit|}}}|bez dodatkowych sprawdzeń=tak|bez komunikatu błędu=tak|wysokość=100%}}|przed lewy={{Div start|styl=width:43.75rem;display:flex;flex-direction:column;overflow:auto;background-color:white;|klasa=strona_spisu_treści}}{{StronaTytułowa|rozmiar=43.75rem}}__NOTOC__|po lewy={{Div koniec}}}} |{{TOC/silnik|funkcja=PokazanaNiewikitabelowaListaMenu|spis treści=Spis treści|limit={{{limit|}}}|bez dodatkowych sprawdzeń=tak|bez komunikatu błędu=tak|wysokość=100%}} }}<!-- -->|strona szablonu={{TOC/silnik|funkcja=PokazanaNiewikitabelowaListaMenu|spis treści=Spis treści|limit={{{limit|}}}|bez dodatkowych sprawdzeń=tak|bez komunikatu błędu=tak|wysokość=100%}}<!-- | -->|#default=__NOTOC__{{TOC/silnik|funkcja=PokazanaNiewikitabelowaListaMenu|spis treści=Spis treści|limit={{{limit|}}}|bez dodatkowych sprawdzeń=tak|bez komunikatu błędu=tak|wysokość=100%}}<!-- -->}}<!-- -->}}<!-- --></div></div> <!-- --><div class="nawigacja_boksy" style="width:auto;height:100%;visibility:hidden;flex-direction:column;margin-top:0;box-sizing:border-box;z-index:1;right:0"><!-- -->{{#if:{{{nagłówek prawy|}}}|<!-- -->{{Div|klasa=mw-optimal-x nagłówek_prawy|styl=position:absolute;right:0;z-index:2;margin-left:0.3125rem|{{{nagłówek prawy}}}}}<!-- -->}}<!-- --><!--{{Div|styl=position:absolute;height:0%;box-sizing:border-box;}}--><!-- -->{{#if:{{{stopka prawa|}}}|<!-- -->{{Div|klasa=mw-optimal-x stopka_prawa|styl=position:absolute;right:0;z-index:2;margin-left:0.3125rem;|{{{stopka prawa}}}}}<!-- -->}}<!-- --> </div><!-- --></div>}}}}<!-- -->{{Mniejszy}}div style="{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|order:2;}}display:flex;flex-direction:column;max-width:100%;box-sizing:border-box;{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}||{{#if:{{{format|}}}|font-size:1rem;line-height:1.4em;}}}}" class="{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|strona_środkowa tło_strona_środkowa|{{#if:{{{formatowanie|}}}|strona_start_formatowanie}} strona_start mobilne niekolumnowy {{#if:{{{format|}}}|format}} tło_strona_start}}"{{Większy}}<!-- -->{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}||{{#if:{{{podręcznik|tak}}}|{{Podręcznik|styl=order:1;}}}}}}<!-- --><div style="order:2;{{#if:{{{margines wewnętrzny|}}}|padding:{{{margines wewnętrzny|0}}};}}">{{{ {{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|wstęp|nagłówek}}|}}}</div><!-- --><div style="order:5;{{#if:{{{margines wewnętrzny|}}}|padding:{{{margines wewnętrzny|0}}};}}">{{{ {{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|zakończenie|stopka}}|}}}</div><!-- Menu strony -->{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|<div class="menu" style="order:3;display:none;"></div>}}<!-- -->{{Mniejszy}}div id="strona" class="strona print {{#if:{{{formatowanie|}}}|fonty_rodzina_sans fonty_główna_kolumna}} tło_strona" style="{{#if:{{{boczne menu|}}}{{{spis treści|TOC}}}|clear:both;}}order:4;display:flex;flex-direction:column;position:relative;left:0px;top:0px;{{#if:{{{obramowanie|tak}}}|border: solid #aaa 1px;}}{{Jeśli niepuste|{{{margines zewnętrzny główny|0}}}|przed lewy=margin:|po lewy=;}}{{#ifeq:{{{boczne menu|}}}{{{spis treści|TOC}}}||{{Jeśli niepuste|{{{margines zewnętrzny|0.3125rem 0 0 0}}}|przed lewy=margin:|po lewy=;}}}}{{#if:{{{margines wewnętrzny|0.625rem 0.625rem 0.625rem 0.625rem}}}{{{obramowanie|tak}}}|box-sizing:border-box;}}"{{Większy}}<!-- -->{{Mniejszy}}div class="style_strony" style="{{Jeśli niepuste|{{{czcionka strony|}}}|przed lewy=font:|po lewy=;}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{rozmiar czcionki strony|}}}|przed lewy=font-size:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{wysokość linii czcionki strony|}}}|przed lewy=line-height:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{rodzina czcionki strony|}}}|przed lewy=font-family:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{wariant czcionki strony|}}}|przed lewy=font-variant:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{rozciągnięcie czcionki strony|}}}|przed lewy=font-stretch:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{waga czcionki strony|}}}|przed lewy=font-weight:|po lewy=;}}}}{{#if:{{{czcionka strony|}}}||{{Jeśli niepuste|{{{styl czcionki strony|}}}|przed lewy=font-style:|po lewy=;}}}}"{{Większy}}<!-- -->{{Mniejszy}}div id="ciało_kontener" class="ciało_kontener mw-overflow-x tło_ciało_kontener" style="display:flex;flex-direction:column;overflow:auto;width:100%;max-width:-moz-available;max-width:-webkit-fill-available;max-width:stretch;"{{Większy}}<!-- -->{{Mniejszy}}div style="order:1;box-sizing:border-box;flex:0 1 auto;max-width:100%;min-width:{{{minimalna szerokość strony|{{{szerokość strony|51.25rem}}}}}};{{#if:{{{margines wewnętrzny|0 0.625rem}}}|padding:{{{margines wewnętrzny|0 0.625rem}}};}}"{{Większy}}{{{nagłówek strony|}}}{{Mniejszy}}/div{{Większy}}<!-- -->{{Mniejszy}}div style="order:3;box-sizing:border-box;flex:0 1 auto;max-width:100%;min-width:{{{minimalna szerokość strony|{{{szerokość strony|51.25rem}}}}}};{{#if:{{{margines wewnętrzny|0 0.625rem}}}|padding:{{{margines wewnętrzny|0 0.625rem}}};}}"{{Większy}}{{{stopka strony|}}}{{Mniejszy}}/div{{Większy}}<!-- -->{{Mniejszy}}div id="ciało_strona" style="order:2;min-width:{{{minimalna szerokość strony|{{{szerokość strony|51.25rem}}}}}};max-width:{{{maksymalna szerokość strony|{{{szerokość strony|51.25rem}}}}}};width:{{{szerokość strony|51.25rem}}};height:{{{wysokość strony|100%}}};{{#if:{{{pasek przewijania|hidden}}}|overflow-x:{{{pasek przewijania|hidden}}};overflow-y:clip;}}{{Jeśli niepuste|{{{margines wewnętrzny|0.625rem}}}|przed lewy=padding:|po lewy=;}}box-sizing:border-box;" class="ciało_strona tło_ciało_strona"{{Większy}}<!-- --></includeonly><noinclude>{{Dokumentacja}}</noinclude> bv9a2489z67jymzmtx1bm23aeacxc1q Szablon:StronaStart/stronastart.css 10 58549 556194 554642 2026-09-13T16:24:49Z Persino 2851 556194 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ol{ margin-top:-0.2rem; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0; } @media all{ :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ cybjihu50ok44gzry15m4vd59zizu33 556195 556194 2026-09-13T16:26:23Z Persino 2851 556195 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ol{ margin-top:-0.2rem; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } @media all{ :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ 9su2ndxpexfp8m71hazcpuepjf2icso 556196 556195 2026-09-13T16:27:56Z Persino 2851 556196 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ol{ margin-top:-0.2rem; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ jed63kl6tgyhrzxu0n4hjjr1r0sy5r3 556197 556196 2026-09-13T16:29:27Z Persino 2851 556197 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ol{ margin-top:-0.2rem; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ tuis92f5l1sgb3y936nstyeb8ah0aa4 556198 556197 2026-09-13T16:32:40Z Persino 2851 556198 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ol{ margin-top:-0.2rem; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + ul{ margin-top:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ pgbmh69wxnqz2l4zkm2k7cwib7yampq 556199 556198 2026-09-13T16:34:36Z Persino 2851 556199 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ cpub0ounun2np6b27xkmqedxk8fhk9t 556214 556199 2026-09-13T17:30:41Z Persino 2851 556214 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p+dl{ margin-top:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ 36313ve6twyn923y89my0i0eqoocu8d 556215 556214 2026-09-13T17:32:59Z Persino 2851 556215 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + p{ margin-top:0.5em; } .strona_start .ciało_strona p+dl{ margin-top:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ hkk6bqhsp497lhyojsqz57fyfgk30yx 556216 556215 2026-09-13T17:34:01Z Persino 2851 556216 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + p{ margin-top:0.3em; } .strona_start .ciało_strona p+dl{ margin-top:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ hpy7yxovg0b487n0c0ckivxgr9egi8n 556217 556216 2026-09-13T17:34:36Z Persino 2851 556217 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + p{ margin-top:0.4em; } .strona_start .ciało_strona p+dl{ margin-top:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ i3g90ezybm708sfmfl62l4xqzf80ey9 556218 556217 2026-09-13T17:39:15Z Persino 2851 556218 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + p{ margin-top:0.4em; } .strona_start .ciało_strona p+dl{ margin-top:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } .strona_start .ciało_strona table{ margin-bottom:0.5em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ inqykg63yb038cjuvrv1284o52x2qj7 556223 556218 2026-09-13T17:51:20Z Persino 2851 556223 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + p{ margin-top:0.4em; } .strona_start .ciało_strona p+dl{ margin-top:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } .strona_start .ciało_strona table{ margin-bottom:0.5em; } .strona_start .ciało_strona table + dl{ margin-top:1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ 91m0tboztwqtfnswhcbd3nt6rcmgga1 556224 556223 2026-09-13T18:00:54Z Persino 2851 556224 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + p{ margin-top:0.4em; } .strona_start .ciało_strona p+dl{ margin-top:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } .strona_start .ciało_strona table{ margin-bottom:0.5em; } .strona_start .ciało_strona table + dl{ margin-top:1em; } .strona_start .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ t6o29zqwrhdgnavlaezjzepjdjsglb2 556225 556224 2026-09-13T18:02:33Z Persino 2851 556225 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + p{ margin-top:0.4em; } .strona_start .ciało_strona p+dl{ margin-top:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } .strona_start .ciało_strona table{ margin-bottom:0.5em; } .strona_start .ciało_strona table + dl{ margin-top:1em; } .strona_start .ciało_strona dl + div.mw-highlight, .strona_start .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ smqwpox4n5mv5812wpgixra6s3v3iqz 556231 556225 2026-09-13T19:40:36Z Persino 2851 556231 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ul, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + p{ margin-top:0.4em; } .strona_start .ciało_strona p+dl{ margin-top:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } .strona_start .ciało_strona table{ margin-bottom:0.5em; } .strona_start .ciało_strona table + dl{ margin-top:1em; } .strona_start .ciało_strona dl + div.mw-highlight, .strona_start .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start p{ margin: 0.4em 0 0.5em 0; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ 3y3phk1zy29q1p02qkebde3hdnm32gu 556235 556231 2026-09-13T19:57:09Z Persino 2851 556235 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ jfe3qem6tgeokle363ijiha0mt7i7l9 556243 556235 2026-09-13T20:27:25Z Persino 2851 556243 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{ display:block; text-align:left; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{ display:inline; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection, body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja, .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ 6523xhbn0p3yfhgwzlc21c1980uew0y 556245 556243 2026-09-13T20:30:40Z Persino 2851 556245 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p, .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{ font-size: inherit; line-height: 1.3; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ 209dqbpgvd60u10qzgbu9t4zwzhqle3 556247 556245 2026-09-13T20:41:04Z Persino 2851 556247 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p, .strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p, .strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ 7o1k0nijs3r9b969s58bsnul1fpy8gf 556249 556247 2026-09-13T20:44:36Z Persino 2851 556249 sanitized-css text/css body.skin--responsive .strona_start{ font-size:1rem; line-height:1.4; } body:not(.skin--responsive) .strona_start{ font-size:16px; line-height:1.4; } .strona_prawa .spis{ display:flex; flex-direction:column; width:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; } .strona_prawa .spis > div, .strona_prawa .spis > div > div{ height:auto; max-height:100%; width:auto; display:flex !important; flex-direction:column; box-sizing:border-box; } .strona_prawa .spis .style_strony_bocznego_menu, .strona_prawa .spis .style_strony_TOC{ overflow:auto; } @media all and (max-width:745px){ .strona_prawa .spis > div, .strona_prawa .spis > div > div{ width:100% !important; } } .strona_prawa .mw-sticky-y.spis:not(:hover){ transform: scale(0.3,0.3) translate(calc(-1*((1 - 0.3)/2/0.3)*100%),calc(-1*((1 - 0.3)/2/0.3)*100%)); /**/ transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_prawa .mw-sticky-y.spis:hover{ max-width:43.75rem !important; transform: scale(1,1) translate(0,0); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } .strona_prawa .pierwsza_strona .wikitable{ margin-top:0.3125rem; margin-bottom:0.3125rem; } .strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{ height: 1px; background-color: var(--border-color-base,#a2a9b1); border: 0; margin: 0.2em 0; } .strona_prawa .pierwsza_strona .pierwsza_strona_spis_treści{ font-size:0.875rem; line-height:1.2; } .strona_start.tło_strona_start, .strona_start .tło_strona_nadrzędna, .strona_start .tło_główna_strona, .strona_start .tło_strona_środkowa, .strona_start .tło_strona, .strona_start .tło_ciało_kontener, .strona_start .tło_ciało_strona{ background-color:white; background-image: none; } .strona_prawa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-left:0.3125rem !important; margin-right:0 !important; } .strona_lewa .nawigacja_boksy > .mw-optimal-x > div{ margin-top:0 !important; margin-bottom:0.3125rem !important; margin-right:0.3125rem !important; margin-left:0 !important; } .strona_prawa .mw-optimal-x:hover, .strona_lewa .mw-optimal-x:hover{ transform: scale(1,1) translate(0,0); max-width:none !important; transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay: 0s; } .strona_prawa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } .strona_lewa .mw-optimal-x:not(:hover){ transform: scale(0.3,0.3) translate(-116.5%,-116.5%); transition: transform 500ms ease-out, linear; transition-property: transform; transition-duration: 500ms; transition-timing-function: ease-out, linear; transition-delay:4s; } html.client-nojs .strona_prawa, html.client-nojs .strona_lewa{ overflow-x:auto !important; overflow-y:hidden !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis{ visibility:visible !important; position:relative !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ width: 100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; height:auto !important; } html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC, html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{ overflow:auto; padding-bottom:0.3125rem; } .strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści, .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{ flex:0 0 auto; } html.client-nojs .strona_prawa .nawigacja_boksy, html.client-nojs .strona_lewa .nawigacja_boksy{ margin-top:0.3125rem !important; visibility:visible !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ transform:none; transition:none; } html.client-nojs .strona_prawa .mw-optimal-x, html.client-nojs .strona_lewa .mw-optimal-x{ overflow:auto !important; visibility:visible !important; position:relative !important; z-index:1 !important; direction: rtl; width: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:not(:hover), html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){ width: auto !important; max-width: calc( 100% - 0.3125rem ) !important; height: auto !important; } html.client-nojs .strona_prawa .mw-optimal-x:hover, html.client-nojs .strona_lewa .mw-optimal-x:hover{ z-index:3 !important; width:100% !important; max-width:calc( 100% - 0.3125rem ) !important; } body.skin-minerva .strona_start{ margin-top:0.25rem !important; } .strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover), .strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){ overflow:auto; } .strona_prawa .mw-optimal-x, .strona_lewa .mw-optimal-x{ display:flex; flex-direction:column; } .strona_lewa .mw-optimal-x > div, .strona_prawa .mw-optimal-x > div{ flex:0 0 auto; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{ background-color:blue !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{ background-color:grey !important; color:white !important; } .strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){ background-color:white !important; color:black !important; } /**/ .strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child, .strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{ margin-bottom:0 !important; padding-bottom:0 !important; } .strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona, .strona > div:not(:only-child) > .ciało_kontener > .ciało_strona, .strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{ padding-bottom:0 !important; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){ margin-top:0.625rem; } .strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){ margin-top:initial; } .strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{ margin-bottom:0.625rem; } .strona > *:not(:first-child), .strona > div > *:not(:first-child){ margin-left:0.5rem; margin-right:0.5rem; } .strona > *:nth-child(2), .strona > div > *:nth-child(2){ margin-top:0.25rem; margin-bottom:0.125rem; } .strona > *:not(:nth-child(2)):not(:first-child), .strona > div > *:not(:nth-child(2)):not(:first-child){ margin-top:0.125rem; margin-bottom:0.125rem; } .strona > *:last-child:not(:first-child), .strona > div > *:last-child:not(:first-child){ margin-top:0.125rem; margin-bottom:0.5rem; } /**/ .strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{ text-align:left; } .strona > div > .ciało_kontener > .ciało_strona > p:first-child{ margin-top:0; } .strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{ margin-bottom:0; } .strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{ margin-top:0.5rem !important; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-x{ padding-bottom:0.3125rem; } .strona > div > .ciało_kontener.mw-scrollbar-overflow-y{ padding-right:0.3125rem; } :not(style):not(link) ~ .strona_start{ margin-top:0.3125rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-top:0 !important; margin-bottom:0.3125rem !important; } .strona_start.niekolumnowy > div.mójNagłówek > div:last-child, .strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne{ max-width:100vw !important; min-width:auto !important; width:100% !important; } .strona_start.kolumnowy.mobilne div > .ciało_kontener > *{ min-width:100% !important; max-width:100% !important; width:100% !important; } .strona_start.kolumnowy.mobilne .strona{ overflow:hidden !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{ margin-bottom:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{ margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2), .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{ max-width:none !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{ flex-wrap: wrap; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{ position:static !important; margin-left:0 !important; margin-right:0 !important; margin-top:0 !important; margin-bottom:0 !important; transition:none !important; transform:none !important; visibility:visible !important; min-width:auto !important; max-width:100vw !important; width:100% !important; box-sizing:border-box !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{ transition:none !important; transform:none !important; position:static !important; margin-left:0 !important; float:none !important; clear:none !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{ width:100% !important; box-sizing:border-box; margin: 0 !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{ font-size:0.80rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{ order:1 !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{ order:2 !important; display:flex; flex-direction:column; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone, .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{ color: #3366cc !important; font-weight: normal !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{ order:3 !important; width:100%; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{ order:1; height:auto !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{ order:2; height:100% !important; max-height:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{ width:100% !important; box-sizing:border-box !important; margin-bottom:0.25rem !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{ max-height:100% !important; overflow:visible !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{ overflow:visible !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{ min-width:auto !important; max-width:100vw !important; width:100% !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{ display:none !important; } .strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{ margin-top:0 !important; margin-bottom:0 !important; } } @media all{ .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{ margin-top:0 !important; } .strona_start.niekolumnowy > .mójNagłówek, .strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *, .strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek, .strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{ margin-top:0 !important; margin-bottom:0.25rem !important; } } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .strona_start.niekolumnowy.mobilne > .strona{ max-width:100vw !important; min-width:auto !important; width:100% !important; overflow:auto !important; } .strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{ min-width:auto !important; max-width:100% !important; width:100% !important; box-sizing:border-box; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ ehaikb2k130qwowzp243es8e6fa82nf Wikipedysta:Persino/Gadget-Vector-2022.css/main.css 2 58973 556229 554025 2026-09-13T19:00:52Z Persino 2851 556229 css text/css /* Kod CSS skórki vector-2022 na WIKI (ustawienia własne vector) */ body:not(.action-edit):not(.action-submit) #mw-content-text .mw-parser-output, body.action-submit #wikiPreview, .mw-footer-container{ word-wrap: break-word; word-break: break-word; } .mw-content-container, .vector-sticky-header, .vector-page-toolbar-container{ max-width: unset !important; } .mw-header{ padding-top:4px; padding-bottom:4px; } .vector-header-container{ box-sizing:border-box; width: -moz-available !important; width: -webkit-fill-available !important; width: stretch !important; } html.vector-feature-page-tools-pinned-enabled > body.ns-special .vector-page-toolbar-container{ margin-top:-2px; } .vector-pinnable-element{ padding-top:3px; } .vector-dropdown .vector-dropdown-content{ padding-top: 6px; margin-top: 7px; } .vector-header-container{ padding-left:20px; padding-right:20px; max-width:none; border-bottom: 1px solid #eaecf0; margin-bottom:4px; max-width:100%; min-width:auto; box-sizing:border-box; } .vector-pinned-container{ margin-bottom:0; padding-right:2px !important; padding-top:2px; } #vector-page-tools-pinned-container.vector-pinned-container{ margin-bottom:0; padding-right:8px !important; } .mw-logo{ min-width:auto; } @media screen and (max-width: 999px){ .mw-header.vector-header-search-toggled .vector-search-box{ margin-left:0; } .cdx-typeahead-search--show-thumbnail.cdx-typeahead-search--auto-expand-width:not(.cdx-typeahead-search--expanded){ margin-left:0; } } @media screen and (max-width: 390px){ .mw-logo{ display:none; } } @media screen and (max-width: 454px){ .cdx-text-input__input{ min-width:auto; } } @media screen and (min-width: 999px) { .client-js.vector-sticky-header-enabled{ scroll-padding-top: 50px; } } .mw-page-container{ max-width:100vw; width:100%; box-sizing:border-box; display:flex; flex-direction:row; min-height:calc( 100% - 3.125rem - 1px - 4px - 8px ); box-sizing:border-box; background-image: url("//upload.wikimedia.org/wikipedia/commons/thumb/0/05/Wikibooksfirehazard2.svg/200px-Wikibooksfirehazard2.svg.png"); background-color:transparent; background-attachment:fixed; margin-left:0; margin-right:0; } .vector-feature-limited-width-clientpref-0 .mw-page-container{ background-color:white; } .vector-feature-limited-width-clientpref-1 .mw-page-container{ background-color:cornflowerblue; } @media all and (max-width:999px){ .mw-page-container{ background-image:none; } } html.vector-feature-limited-width-clientpref-0 > body > .mw-page-container, html.vector-is-page-available > body > .mw-page-container{ background-image:none; } @media all and (max-width:476px){ .mw-page-container{ min-height:calc( 100% - 6.75rem - 1px - 4px - 8px ); width:100% !important; } } @media all and (max-width:999px){ .mw-page-container{ width:100% !important; } } .mw-page-container > .mw-page-container-inner{ background-color:white; padding-left: 5px; padding-right: 5px; } .mw-page-container > .mw-page-container-inner{ max-width:100vw; margin:auto; margin-top:0; } .vector-main-menu-container, .mw-content-container{ margin-top:2px; } @media all and (min-width:999px){ .mw-page-container > .mw-page-container-inner{ padding-left:5px; padding-right:5px; max-width:100%; } .mw-page-container > .mw-page-container-inner{ width:auto; } .vector-feature-limited-width-clientpref-0 #content{ width:100%; } .mw-page-container .mw-content-container{ display:flex; flex-direction:column; } .mw-page-container .mw-content-container > #content{ height:auto; order:1; } .mw-page-container .mw-content-container > #mw-data-after-content{ order:2; } html.client-nojs #bodyContent{ width:auto !important; } html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .mw-body-header, html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .mw-body-header{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem ); } html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .mw-body-header{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .mw-body-header, html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .mw-body-header{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem ); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .mw-body-header{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .mw-body-header, html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .mw-body-header{ width:calc(50rem + 2 * 0.625rem + 2px ); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .mw-body-header{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem ); } /**/ html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-page-toolbar, html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-page-toolbar{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem ); } html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-page-toolbar{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-page-toolbar, html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-page-toolbar{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem ); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-page-toolbar{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-page-toolbar, html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-page-toolbar{ width:calc(50rem + 2 * 0.625rem + 2px ); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-page-toolbar{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem ); } /**/ html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #bodyContent, html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #bodyContent, html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #bodyContent, html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #bodyContent{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #bodyContent, html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #bodyContent{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #bodyContent, html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #bodyContent{ width:calc(50rem + 2 * 0.625rem + 2px ); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #bodyContent{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem ); } /**/ html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 15rem + 5px ); } /**/ /**/ html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem ); } html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem ); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px ); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem ); } /**/ html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 15rem + 5px ); } /**/ html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem ); } html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem ); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px ); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem ); } /**/ .mw-footer-container{ display: flex; flex-direction: row; align-items: stretch; justify-content: center; } } body, .mw-page-container, .mw-page-container-inner, .mw-content-container, #content, #bodyContent, #mw-content-text, .mw-parser-output, #footer, .vector-sitenotice-container{ max-width:-moz-available !important; max-width:-webkit-fill-available !important; max-width:stretch !important; } body.ns-10:not(.ns-submit) .mw-body-header, body.ns-828:not(.ns-submit) .vector-sitenotice-container, body.vector-page-css.ns-8 .mw-body-header, body.vector-page-js.ns-8 .mw-body-header, body.vector-page-css.ns-2 .mw-body-header, body.vector-page-js.ns-2 .mw-body-header, body.ns-10:not(.ns-submit) .vector-sitenotice-container, body.ns-828:not(.ns-submit) .vector-sitenotice-container, body.vector-page-css.ns-8 .vector-sitenotice-container, body.vector-page-js.ns-8 .vector-sitenotice-container, body.vector-page-css.ns-2 .vector-sitenotice-container, body.vector-page-js.ns-2 .vector-sitenotice-container, body.ns-10:not(.ns-submit) .vector-page-toolbar, body.ns-828:not(.ns-submit) .vector-page-toolbar, body.vector-page-css.ns-8 .vector-page-toolbar, body.vector-page-js.ns-8 .vector-page-toolbar, body.vector-page-css.ns-2 .vector-page-toolbar, body.vector-page-js.ns-2 .vector-page-toolbar, body.ns-10:not(.ns-submit) #bodyContent, body.ns-828:not(.ns-submit) #bodyContent, body.vector-page-css.ns-8 #bodyContent, body.vector-page-js.ns-8 #bodyContent, body.vector-page-css.ns-2 #bodyContent, body.vector-page-js.ns-2 #bodyContent, body.ns-10:not(.ns-submit) #footer, body.ns-828:not(.ns-submit) #footer, body.vector-page-css.ns-8 #footer, body.vector-page-js.ns-8 #footer, body.vector-page-css.ns-2 #footer, body.vector-page-js.ns-2 #footer{ width:100% !important; } @media all and (min-width:745px){ body.ns-10:not(.ns-submit) .mw-page-container > .mw-page-container-inner, body.ns-828:not(.ns-submit) .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-10 .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-10 .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-828 .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-828 .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-2.vector-page-css .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-2.vector-page-css .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-8.vector-page-css .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-8.vector-page-css .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-2.vector-page-js .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-2.vector-page-js .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-8.vector-page-js .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-8.vector-page-js .mw-page-container > .mw-page-container-inner, body.vector-page-css.ns-8 .mw-page-container > .mw-page-container-inner, body.vector-page-js.ns-8 .mw-page-container > .mw-page-container-inner, body.vector-page-css.ns-2 .mw-page-container > .mw-page-container-inner, body.vector-page-js.ns-2 .mw-page-container > .mw-page-container-inner, body.ns-10 .mw-page-container > .mw-page-container-inner, html.client-nojs{ width:100%; order:2; } } html.vector-feature-limited-width-clientpref-0 .mw-body-header, html.vector-feature-limited-width-clientpref-0 .vector-page-toolbar, html.vector-feature-limited-width-clientpref-0 .vector-sitenotice-container, html.vector-feature-limited-width-clientpref-0 #bodyContent, html.vector-feature-limited-width-clientpref-0 #footer, html.vector-feature-limited-width-clientpref-0 .vector-page-toolbar, html.client-nojs .mw-page-container > .mw-page-container-inner .mw-body-header, html.client-nojs .mw-page-container > .mw-page-container-inner .vector-page-toolbar, html.client-nojs .mw-page-container > .mw-page-container-inner .vector-sitenotice-container, html.client-nojs .mw-page-container > .mw-page-container-inner #bodyContent, html.client-nojs .mw-page-container > .mw-page-container-inner #footer, html.client-nojs .mw-page-container > .mw-page-container-inner .vector-page-toolbar, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .mw-body-header, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .vector-page-toolbar, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .vector-sitenotice-container, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner #bodyContent, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner #footer, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .vector-page-toolbar{ width:100% !important; } html.vector-feature-limited-width-clientpref-0 .mw-page-container > .mw-page-container-inner, html.client-nojs .mw-page-container > .mw-page-container-inner, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner{ max-width:100vw; width:100%; overflow:auto; } #bodyContent, #content{ box-sizing:border-box; } .vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-page-container-inner, .vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-page-container-inner{ grid-template-columns: minmax(0,1fr); } body{ background-color:white; } .mw-footer-container{ padding: 7px 0 2px 0; } .mw-footer-container > .mw-footer{ padding:10px 5px; } .mw-page-container{ padding-right:0; padding-left:0; box-sizing:border-box; min-width:auto; } @media all and (min-width: 1000px){ .mw-body{ grid-template: min-content min-content min-content 1fr / minmax(0,1fr) auto; grid-template-areas: 'titlebar titlebar' 'toolbar toolbar' 'content columnEnd' '.. columnEnd'; column-gap:0 !important; width:100%; box-sizing:border-box; } } .mw-page-container-inner{ grid-template-columns: 15rem minmax(0,1fr); column-gap: 5px; } html.vector-column-end .vector-appearance-landmark{ max-width:11.875rem; } html.client-nojs.vector-feature-appearance-pinned-clientpref-1:not(.vector-feature-page-tools-pinned-enabled) .vector-column-end{ display:none; } html.client-js.vector-feature-appearance-pinned-clientpref-1:not(.vector-feature-page-tools-pinned-enabled) .vector-column-end{ width:8.125rem !important; } html.client-js.vector-feature-page-tools-pinned-enabled.vector-feature-appearance-pinned-clientpref-0 .vector-column-end{ width:11.875rem; } html.client-nojs.vector-feature-page-tools-pinned-enabled .vector-column-end, html.client-js.vector-feature-appearance-pinned-clientpref-1.vector-feature-page-tools-pinned-enabled .vector-column-end{ width:11.875rem; } .vector-sticky-pinned-container{ padding-bottom:5px; } .vector-sticky-pinned-container::after{ display:none; } .vector-sticky-pinned-container{ top:0; } .client-js.vector-sticky-header-enabled body:not(.vector-sticky-header-visible) .vector-sticky-pinned-container{ top: 0 !important; max-height:calc( 100vh - 3px ); } .client-js.vector-sticky-header-enabled body.vector-sticky-header-visible .vector-sticky-pinned-container{ top: 3.2rem !important; max-height: calc(100vh - 3.2rem - 5px); } .client-js.vector-sticky-header-enabled body.vector-sticky-header-visible .vector-column-start .vector-sticky-pinned-container{ top: 3.5rem !important; } #siteNotice{ margin:unset; } #centralNotice:not(:empty){ margin: 5px 0 8px 0; } #centralNotice:not(:empty) > div:first-of-type{ margin-top:5px; } #centralNotice:not(:empty) > div:last-of-type{ margin-bottom:8px; } .mw-indicators{ white-space:nowrap; font-size: 0.875rem; line-height: 1.4; } .mw-indicators .mw-parser-output{ font-size: 1.0em; line-height: 1.4; } .vector-page-titlebar-blank .mw-indicators{ display:none; } .mw-body-header{ position:relative; height:2.6rem; box-sizing:border-box; } .mw-body-header > .firstHeading:not(:hover){ height:100%; box-sizing:border-box } body .firstHeading:not(:hover) > .plainlinks, body:not(.action-view) .firstHeading:not(:hover) > .plainlinks{ display:none; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } body .firstHeading > .plainlinks, body:not(.action-view) .firstHeading > .plainlinks{ text-shadow:none; } .mw-body h1.firstHeading{ font-size: 1.6rem; line-height: 1.4; } body.action-view:not(.ns-special) .firstHeading{ min-height:100%; box-sizing:border-box; overflow:hidden; } body.action-view:not(.ns-special) .firstHeading:not(:hover){ height:100%; } body.action-view:not(.ns-special) .firstHeading:not(:hover){ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; border-bottom:0; padding-top:6px; margin-right:7px; } body:not(.ns-0).action-view:not(.ns-special) .mw-body-header:not(.vector-page-titlebar-blank) .firstHeading:not(:hover){ display:block !important; } body:not(.ns-0).action-view:not(.ns-special) .mw-body-header.vector-page-titlebar-blank .firstHeading:not(:hover){ display:none !important; } html.vector-feature-limited-width-content-enabled body.ns-0.action-view:not(.ns-special) .firstHeading:not(:hover){ display:flex; flex-direction:row; justify-content:flex-start; } body:not(.action-view) .firstHeading:not(:hover), body.action-view.ns-special .firstHeading:not(:hover), html.vector-feature-limited-width-content-disabled body.action-view .firstHeading:not(:hover){ display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; border-bottom:0; padding-top:6px; } body:not(.action-view) firstHeading:first-child:not(:hover), body.action-view.ns-special firstHeading:first-child:not(:hover), html.vector-feature-limited-width-content-disabled body.action-view .firstHeading:first-child:not(:hover){ margin-left:0; } html.vector-feature-toc-pinned-clientpref-0 body:not(.action-view) .firstHeading:not(:first-child):not(:hover), html.vector-feature-toc-pinned-clientpref-0 body.action-view.ns-special .firstHeading:not(:first-child):not(:hover), html.vector-feature-toc-pinned-clientpref-0 body.action-view .firstHeading:not(:first-child):not(:hover){ margin-left:5px; } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available body:not(.action-view) .firstHeading:not(:first-child):not(:hover), html.vector-feature-toc-pinned-clientpref-1.vector-toc-available body.action-view.ns-special .firstHeading:not(:first-child):not(:hover), html.vector-feature-toc-pinned-clientpref-1.vector-toc-available body.action-view .firstHeading:not(:first-child):not(:hover){ margin-left:0; } body.ns-0 .firstHeading:not(:hover) > div:not(.plainlinks):first-of-type, body.ns-0:not(.action-view) .firstHeading:not(:hover) > div:not(.plainlinks):first-of-type{ order:4; } body.ns-0 .firstHeading:not(:hover) > #firstHeadingTitle, body.ns-0:not(.action-view) .firstHeading:not(:hover) > #firstHeadingTitle{ order:5; } body.ns-0 .firstHeading:not(:hover) > .mw-page-title-main, body.ns-0:not(.action-view) .firstHeading:not(:hover) > .mw-page-title-main{ order:3; } body.ns-0 .firstHeading:not(:hover) > #mw-article-numbering, body.ns-0:not(.action-view) .firstHeading:not(:hover) > #mw-article-numbering{ order:1; } body.ns-0 .firstHeading:not(:hover) > *[lang], body.ns-0:not(.action-view) .firstHeading:not(:hover) > *[lang]{ order:2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } body.ns-0 .firstHeading > .mw-editsection{ height:1.2em; line-height:3.8; } body.ns-0 .firstHeading:not(:hover) > .mw-editsection{ order:4; } body .firstHeading:hover{ display:block; border:1px solid #eaecf0; border-radius:10px; background-color:white; position:absolute; top:0; /*left:-6px;*/ width:auto; padding:5px; z-index:2; } .firstHeading:first-child:hover{ left:-6px; } html.vector-feature-toc-pinned-clientpref-0 .firstHeading:not(:first-child):hover{ left:1.4375rem; } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available .firstHeading:not(:first-child):hover{ left:-6px; } header.mw-body-header{ justify-content:space-between; width:100%; box-sizing:border-box; } #vector-main-menu > div.vector-pinnable-header{ margin-left:5px; } body .firstHeading:hover{ word-wrap:break-word; hyphens:auto; width:auto; } html.vector-feature-limited-width-content-enabled body.ns-0.action-view .firstHeading:hover{ display:grid !important; justify-content:start; grid-template-columns:auto auto auto auto minmax(auto,1fr); } body.ns-0.action-view .firstHeading:hover > #mw-article-numbering:first-child{ grid-row-start:1; grid-row-end:2; grid-column-start:1; grid-column-end:2; width:auto; } body.ns-0.action-view .firstHeading:hover > :not(#mw-article-numbering):first-child, body.ns-0.action-view .firstHeading:hover > #mw-article-numbering:first-child + *{ grid-row-start:1; grid-row-end:2; grid-column-start:3; grid-column-end:4; width:auto; } body.ns-0.action-view .firstHeading:hover > .mw-page-title-main{ grid-row-start:1; grid-row-end:2; grid-column-start:2; grid-column-end:3; width:auto; } body.ns-0.action-view .firstHeading:hover > .mw-editsection{ grid-row-start:1; grid-row-end:2; grid-column-start:4; grid-column-end:5; width:auto; } body.ns-0.action-view .firstHeading:hover > .plainlinks{ grid-row-start:auto; grid-row-end:auto; grid-column-start:1; grid-column-end:6; width:auto; } body.action-view .firstHeading:hover{ display:block !important; } .mw-body-header > .mw-indicators{ order:3; margin-top:auto; margin-bottom:3px; } .mw-body-header::before{ content:''; display:block; order:3; width:auto; flex:auto 1 1; } .mw-body-header > .vector-toc-landmark{ width:1.5rem; height:2.125rem; } .mw-body-header > .vector-toc-landmark{ order:1; } html.vector-feature-toc-pinned-clientpref-0 .vector-toc-landmark{ margin-right:0; } .mw-body-header > .vector-toc-landmark ~ #firstHeading:not(:hover){ order:2; } .mw-body-header > .vector-toc-landmark ~ #firstHeading:not(:hover) ~ #ca-addsection{ order:3; } .mw-body-header > .vector-toc-landmark ~ #firstHeading:not(:hover) ~ #p-lang-btn{ order:4; } .mw-body-header > .vector-toc-landmark ~ #firstHeading:hover ~ #p-lang-btn{ order:3; } /**/ .mw-body-header > #firstHeading:first-child:not(:hover){ order:2; } .mw-body-header > #firstHeading:first-child:not(:hover) ~ #ca-addsection{ order:3; } .mw-body-header > #firstHeading:first-child:not(:hover) ~ #p-lang-btn{ order:4; } .mw-body-header > #firstHeading:first-child:hover ~ #ca-addsection{ order:3; } .mw-body-header > #firstHeading:first-child:hover ~ #p-lang-btn{ order:4; } #ca-addsection{ margin-left:0; margin-right:0; } .vector-page-titlebar{ flex-wrap:nowrap; } /**/ .vector-page-titlebar .vector-page-titlebar-toc .vector-menu-heading{ padding:0.3125em !important; } #vector-page-titlebar-toc-label{ height: 2.125rem; max-width: 28rem; min-height:unset; } .vector-toc-landmark{ margin-top:auto; margin-bottom:0; } .mw-body-header .mw-portlet-lang{ margin-right:0; } #vector-page-titlebar-toc-checkbox{ display:none; } body .firstHeading:hover > .plainlinks, body:not(.action-view) .firstHeading:hover > .plainlinks{ display:block; } #mw-panel{ border-radius: 10px; border: 1px solid #c8ccd1; padding: 5px; } /**/ #mw-panel .vector-menu-heading:not(.mw-menu-inactive), #vector-main-menu-pinned-container .vector-menu-heading:not(.mw-menu-inactive), #vector-main-menu-unpinned-container .vector-menu-heading:not(.mw-menu-inactive), #vector-page-tools-pinned-container .vector-menu-heading:not(.mw-menu-inactive), #vector-page-tools-unpinned-container .vector-menu-heading:not(.mw-menu-inactive){ background-color:whitesmoke; } #mw-panel .mw-menu-inactive, #vector-main-menu-pinned-container .mw-menu-inactive, #vector-main-menu-unpinned-container .mw-menu-inactive, #vector-page-tools-pinned-container .mw-menu-inactive, #vector-page-tools-unpinned-container .mw-menu-inactive{ background-color:lightsteelblue; color:white; } #mw-panel .vector-menu-heading, #vector-main-menu-pinned-container .vector-menu-heading, #vector-main-menu-unpinned-container .vector-menu-heading, #vector-page-tools-pinned-container .vector-menu-heading, #vector-page-tools-unpinned-container .vector-menu-heading{ padding-left:5px !important; padding-right:5px !important; margin-left:0 !important; display:block; border-radius:5px; border:1px solid #c8ccd1; margin-top:3px; margin-bottom:0; } #mw-panel .vector-menu-content:not(.mw-items-inactive), #vector-main-menu-unpinned-container .vector-menu-content:not(.mw-items-inactive), #vector-page-tools-pinned-container .vector-menu-content:not(.mw-items-inactive), #vector-page-tools-unpinned-container .vector-menu-content:not(.mw-items-inactive){ display:block; border-radius:5px; border:1px solid #c8ccd1; padding: 5px; margin-top:2px; } #mw-panel .vector-menu-content:not(.mw-items-inactive) > ul, #vector-main-menu-unpinned-container .vector-menu-content:not(.mw-items-inactive) > ul, #vector-page-tools-pinned-container .vector-menu-content:not(.mw-items-inactive) > ul, #vector-page-tools-unpinned-container .vector-menu-content:not(.mw-items-inactive) > ul{ margin-top:0; } #mw-panel .mw-items-inactive, #vector-main-menu-unpinned-container .mw-items-inactive, #vector-page-tools-pinned-container .mw-items-inactive, #vector-page-tools-unpinned-container .mw-items-inactive{ display:none; } .vector-main-menu #p-navigation .vector-menu-heading{ display:block; } #mw-panel .vector-main-menu-action, #vector-main-menu-unpinned-container .vector-main-menu-action, #vector-page-tools-pinned-container .vector-main-menu-action, #vector-page-tools-unpinned-container .vector-main-menu-action{ display:none; } #mw-panel.hidden_sidebar_panel{ position:relative; z-index:1; } #mw-panel.hidden_sidebar_panel > #hideSidebar_close_lpanel{ position:absolute; right:0; } #mw-panel.hidden_sidebar_panel > #vector-main-menu-pinned-container{ display:none; } #mw-panel #vector-main-menu-pinned-container{ padding-left:0 !important; } #vector-main-menu-pinned-container .vector-main-menu{ margin-left:0 !important; margin-top:0 !important; } #mw-data-after-content .cdx-card{ margin:5px 0; border-radius:10px; } .vector-unpinned-container .vector-menu{ margin:0 5px; } #mw-content-text .mw-parser-output code{ position:relative; } .mw-parser-output pre{ margin-top:8px; margin-bottom:8px; background-color: #f8f9fa; color: #000; border: 1px solid #eaecf0; word-wrap:break-word; word-break:break-word; hyphens:auto; box-sizing:border-box; font-size:110%; } .client-js .vector-search-box-vue .cdx-search-input{ position:relative; } .client-js .vector-search-box-vue .vector-typeahead-search .cdx-text-input__input{ border-right-color:#a2a9b1 !important; } .client-js .vector-search-box-vue .vector-typeahead-search .cdx-search-input__end-button{ position:absolute; right:0; } html.client-js .vector-search-box-vue .vector-typeahead-search--active .cdx-search-input__end-button, html.client-js .vector-search-box-vue .vector-typeahead-search:hover .cdx-search-input__end-button{ position:relative; } .mw-content-container #content{ border-radius:10px; border:1px solid #c8ccd1; padding:10px; padding-top:8px; } body:not(.action-view):not(.ns-special) .vector-body-before-content{ float:right; } body.ns-special .vector-body-before-content .mw-indicators{ margin-top:6px; float:right; padding-top:0; } body:not(.ns-special) .vector-body-before-content .mw-indicators{ margin-top:2px; float:right; padding-top:0; margin-bottom:0.2px; } .vector-body-before-content > .mw-indicators img, .mw-body-header .mw-indicators img{ max-height:1.7em; } body:not(.page-Wikibooks_Strona_główna).action-view:not(.ns-special) .vector-body-before-content::after{ content:''; display:block; clear:both; order:2; } body.action-view #bodyContent div#siteSub{ display:block !important; } body.action-view:not(.ns-special) .vector-body-before-content #siteSub{ display:block; float:left; order:1; margin-top:5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size:0.8125rem; line-height:1.4em; padding-bottom:1px; } body.action-view:not(.ns-special) .vector-body-before-content{ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } body.action-view:not(.ns-special) .vector-body-before-content .mw-indicators{ order:3; white-space:nowrap; } body.action-view:not(.ns-special) .vector-body-before-content{ border-bottom:1px solid #c8ccd1; padding-bottom:3px; display:flex; flex-direction:row; justify-content:space-between; align-items: flex-end; } #mw-content-text{ margin-top:10px; } .catlinks{ margin-top:7px !important; } .mw-category-generated > :first-child > h2:first-child{ margin-top:14px; } body.ns-14 .mw-category-generated > p:only-child{ border:1px solid #c8ccd1; padding:5px; margin-top:5px; margin-bottom:5px; } body.ns-14 .mw-parser-output.blank{ margin-top:-3px; } body.ns-14 .mw-parser-output.blank ~ .printfooter{ margin-top:3px; } #content::after{ content:''; clear:both; display:block; } #bodyContent{ margin-bottom:0; box-sizing: border-box; } body.action-edit #bodyContent #editform{ margin-top:5px; } body{ font-family: Arial, Helvetica, "Free Helvetian", FreeSans, sans-serif; font-stretch:normal; font-variant:normal; font-style:normal; font-weight:normal; font-size-adjust:none; letter-spacing:normal; word-spacing:normal; text-align:left; word-wrap:break-word; hyphens:auto; } body.action-history #mw-content-text > *:first-child{ margin-top:8px; } .mw-parser-output hr{ font-size:1.2em; } #mw-content-text, #mw-content-text .mw-message-box-warning, #mw-content-text .mw-parser-output{ font-size: calc(0.875rem * 0.89944); line-height: 1.4em; } .mw-ui-icon{ font-size:1rem; } body{ font-size:1rem; line-height:1.4em; } /**/ body.action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before, body.action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{ content:''; clear:both; display:block; } body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before, body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{ margin-bottom:8px; } body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before, body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{ margin-bottom:0; } body.action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.blank)::after, body.action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.blank)::after{ content:''; clear:both; display:block; } body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.blank)::after, body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.blank)::after{ margin-top:3px; } body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output:last-child:not(.blank)::after, body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output.last-child:not(.blank)::after{ margin-top:0; } body.ns-special.action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before, body.ns-special.action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{ margin-bottom:0; } body.ns-special.action-view #mw-content-text .mw-parser-output:last-child:not(.blank)::after, body.ns-special.action-view #mw-content-text .mw-parser-output.last-child:not(.blank)::after{ margin-top:0; } /**/ body.action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before, body.action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{ content:''; clear:both; display:block; } body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before, body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{ margin-bottom:8px; } body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before, body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{ margin-bottom:0; } body.action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after, body.action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{ content:''; clear:both; display:block; } body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after, body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{ margin-top:3px; } body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after, body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{ margin-top:0; } body.ns-special.action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before, body.ns-special.action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{ margin-bottom:0; } body.ns-special.action-view #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after, body.ns-special.action-view #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{ margin-top:0; } /**/ body:not(.page-Wikibooks_Strona_główna) .printfooter{ display:block; padding:5px; border:1px solid #c8ccd1; margin-top:6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; clear:both; } .noarticletext{ margin-top:0; margin-bottom:7px; } body.action-view #bodyContent #contentSub{ display:block !important; } #contentSub{ margin-top:5px !important; } #contentSub > #pwContent > #pwPathway, #contentSub > #pwContent > #pwPathway + #pwNav, #contentSub > #mw-content-subtitle, #contentSub > #mw-content-subtitle > .subpages, #contentSub2 > .subpages > .mw-undelete-subtitle{ font-size:0.75rem; line-height:1.2em; } #contentSub2{ margin-top:4px !important; } #contentSub2 > .subpages{ border-bottom:1px solid #c8ccd1; padding-bottom:5px; padding-top:2px; } #pwContent:not(:empty){ border-bottom:1px solid #c8ccd1; padding-bottom:3px; font-size:100%; } html:not(.client-nojs) body:not(.mw-special-Watchlist) #mw-content-subtitle:not(:empty), html.client-nojs #mw-content-subtitle:not(:empty){ border-bottom:1px solid #c8ccd1; padding-bottom:3px; } #mw-content-subtitle > .subpages:not(:last-child){ border-bottom:1px solid #c8ccd1; padding-bottom:3px; } #mw-content-subtitle .mw-message-box-warning:not(:last-child){ margin:10px 0; } #mw-content-subtitle .mw-message-box-warning:last-child{ margin:10px 0 8px 0; } body.action-edit #mw-content-text > :not(.mw-editnotice):not(.mw-parser-output):not(.mw-message-box-warning):first-child{ margin-top:10px !important; margin-bottom:10px !important; } #mw-content-subtitle #redirectsub, #mw-content-subtitle .mw-redirectedfrom{ display:block; margin: 5px 0 2px 0; } #mw-content-subtitle .mw-redirectedfrom:not(:last-child){ border-bottom: 1px solid #c8ccd1; } #mw-content-text > .mw-message-box-warning:first-child{ margin:10px 0; } #mw-content-text > .mw-message-box-warning{ margin:5px 0 10px 0; } body.action-edit #mw-content-text > .mw-editnotice:first-child{ margin-top:12px; } body.action-edit #mw-content-text > :not(.mw-editnotice):not(.mw-parser-output):not(.mw-message-box-warning):first-child{ margin-top:-3px; } body.action-view.ns-special #mw-content-text > :not(div):not(p):first-child{ margin-top:18px; } body:not(.action-view) #mw-content-text > p:first-child{ margin-top:3px; } #contentsub::after{ content:''; display:block; } .previewnote, #wikiPreview.ontop{ margin-bottom:10px; max-width:unset; } body.action-submit #mw-content-text > #wikiPreview > .previewnote > #mw-previewheader{ margin-top:0.8em; margin-bottom:0.4em; } div.thumb.tright:first-child, div.thumb.tleft:first-child{ margin-top:0; } #mw-content-text .mw-parser-output > p:first-child{ margin-top:0; } #mw-content-text .mw-parser-output > p:not(.br-clear-both):last-child{ margin-bottom:0; } #mw-content-text .mw-parser-output > :not(p).floatleft:first-child + p, #mw-content-text .mw-parser-output > :not(p).floatright:first-child + p, #mw-content-text .mw-parser-output > :not(p).tleft:first-child + p, #mw-content-text .mw-parser-output > :not(p).tright:first-child + p{ margin-top:0; } #mw-content-text .mw-parser-output .template-documentation:first-of-type{ margin-top:0; box-sizing:border-box; } #mw-content-text .mw-parser-output > :not(style):not(link) ~ .template-documentation{ margin-top:10px !important; box-sizing:border-box !important; } #mw-content-text .mw-parser-output #documentation-meta-data:not(:last-child){ margin-top:3px !important; margin-bottom:3px !important; } #mw-content-text .mw-parser-output #documentation-meta-data:last-child{ margin-top:3px !important; margin-bottom:0 !important; } body.ns-14 .mw-category-generated > * > .mw-content-ltr > .mw-category > .mw-category-group > h3.only-whitespace.is-only-whitespace::before{ display:block; content:'(pusta)'; float:left; } .vector-body{ font-size: calc(1rem * 0.875); line-height: 1.5em; } @media all and (min-width:999px){ html.vector-feature-page-tools-pinned-enabled #bodyContent.vector-body, html.vector-feature-appearance-pinned-clientpref-1 #bodyContent.vector-body{ border-right: 1px solid #c8ccd1; border-bottom:1px solid #c8ccd1; padding-right:0.625rem; padding-bottom:0.625rem; } } .vector-toc .vector-toc-list-item a{ font-size:0.8125rem; line-height:1.4em; } .wb-langlinks-link > a::before{ margin-left:-8px; } /**/ .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover, .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover, .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:active:hover, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:active:hover{ display:block; outline:1px solid #eaecf0; border-radius:10px; box-sizing:border-box; width:100%; } .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover{ background-color:blue !important; } .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:active:hover, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:active:hover, .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover{ background-color:green !important; } .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover{ color:white !important; } .vector-pinned-container .vector-toc ul.vector-toc-contents li > a, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a, .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a{ display:block; width:100%; text-decoration:none; font-size: 0.8125rem; line-height:1.4em; box-sizing:border-box; padding:0 5px !important; } .vector-feature-toc-pinned-clientpref-1.vector-toc-available #vector-toc-pinned-container{ margin-top:0; } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available .vector-main-menu-container{ margin-bottom:5px; } .vector-column-start .vector-main-menu-container, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available .vector-column-start .vector-sticky-pinned-container{ margin-left:12px; } @media (min-width: 999px){ html.vector-feature-toc-pinned-clientpref-1.vector-toc-available #vector-toc-pinned-container{ border-radius:10px; border:1px solid #c8ccd1; padding:8px; padding-left:6px; } } #mw-panel-toc-list{ margin-top:6px; } #vector-toc-pinned-container .vector-toc::after{ display:none; } .vector-toc .vector-toc-text{ padding: 3px 0 !important; } button.cdx-button{ z-index:1; } .vector-menu-tabs .mw-list-item.vector-tab-noicon > a, .vector-page-toolbar-container .vector-dropdown.vector-tab-noicon > a, .vector-menu-tabs .mw-list-item .vector-dropdown-label, .vector-page-toolbar-container .vector-dropdown .vector-dropdown-label{ padding-bottom:3px; margin-bottom:0; } .vector-menu-tabs .mw-list-item > a, .vector-page-toolbar-container .vector-dropdown > a, .vector-menu-tabs .mw-list-item .vector-dropdown-label, .vector-page-toolbar-container .vector-dropdown .vector-dropdown-label{ max-height:37px; line-height:1.4em; } .mw-diff-table-prefix{ max-width:calc( 100% - 2em ); } .vector-column-start{ border-top:0; margin-top:0; } html.vector-feature-page-tools-pinned-enabled .vector-column-end, html.vector-feature-appearance-pinned-clientpref-1 .vector-column-end{ margin-top:0; margin-left:-1px; border: 1px solid #c8ccd1; border-top:0; padding-top:2px; } .vector-column-start .vector-sticky-pinned-container{ margin-left:0; } .vector-header-container .mw-header{ max-width:none; min-width:auto; } .vector-header-container{ padding-left:0; padding-right:0; } .vector-header-container .mw-header{ padding-left:1.5rem; padding-right:1.5rem; } .client-js.vector-feature-toc-pinned-clientpref-0 body:not(.vector-sticky-header-visible) .vector-page-titlebar-toc{ margin-right:0; } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available #vector-toc-pinned-container{ padding-left:15px; } .vector-pinned-container{ padding: 16px 8px; padding-top:5px; padding-bottom:0; } .vector-dropdown .vector-dropdown-content{ padding-right:4px; padding-bottom:0; /*width:800px;*/ } .vector-dropdown#vector-page-titlebar-toc .vector-dropdown-content{ padding-left:12px } .vector-dropdown#vector-page-tools-dropdown .vector-dropdown-content{ padding-left:4px; padding-bottom:8px; } .vector-dropdown#vector-main-menu-dropdown .vector-dropdown-content{ padding-left:4px; } .client-js.vector-feature-toc-pinned-clientpref-0 body:not(.vector-sticky-header-visible) .vector-page-titlebar-toc .vector-dropdown-content{ /*max-width:200px;*/ } .mw-header{ grid-template: auto / 15em minmax(0,1fr); grid-template-areas:'headerStart headerEnd'; } #p-navigation.mw-portlet-navigation{ margin-top:0px; } .vector-menu.mw-portlet:not(.mw-portlet-navigation){ margin-top:4px; } .vector-toc .vector-toc-list-item-active > .vector-toc-link .vector-toc-text, .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-expanded) > .vector-toc-link .vector-toc-text, .vector-toc .vector-toc-list-item-active.vector-toc-level-1-active > .vector-toc-link .vector-toc-text{ width:unset !important; } @media not screen{ } html.vector-feature-custom-font-size-clientpref-0{ font-size:14px; } html.vector-feature-custom-font-size-clientpref-1{ font-size:16px; } html.vector-feature-custom-font-size-clientpref-2{ font-size:18px; } .oo-ui-buttonElement { vertical-align: text-top; } oqi7stfx8q5ttsa2j50mywyfb6j269m Wikibooks:Mechanizm MediaWiki 4 60755 556172 553940 2026-09-13T14:16:27Z Persino 2851 /* Moduły {{lpg|Lua}} w {{lpr|Lua|Scribunto}} */ 556172 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}}). * Specyficzne ** {{m|Liczby}} ({{lru|Moduły/Liczby}}). * 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> dbgmu4cjw1h1xc6hjyaz0azf3sh8isf Moduł:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron 828 62247 556171 556020 2026-09-13T14:14:35Z Persino 2851 556171 Scribunto text/plain local p={}; function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self) return self.tabela_listy_danych_analizy_ksiazki; end; function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self) self.tabela_listy_danych_analizy_ksiazki={}; self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron={}; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); self.tabela_listy_danych_analizy_ksiazki.problemy=nil; self.tabela_listy_danych_analizy_ksiazki.licencja={}; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local function DaneNazw(pelna_nazwa_strony) local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_strony,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw); local nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw); return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; local strona_aktualna=ksiazkowe_modul["PełnaNazwaArtykułu"](); local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=DaneNazw(strona_aktualna); local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":") or "") ..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "") ..nazwa_ksiazki; local pelna_nazwa_ksiazki_ustawienia="Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki; local techniczne_modul=require("Module:Techniczne"); local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki_ustawienia.."/config",tekst=true,}; if(ile>0)then local frame=mw.getCurrentFrame(); local szablonowe_modul=require("Module:Szablonowe"); local nazwa_szablonu=szablonowe_modul.NazwaSzablonu(pelna_nazwa_ksiazki_ustawienia); local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}}; local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}}; if(not mw.ustring.match(ksiazka,"^%s*$"))then local strona=ksiazka..((artykul~="") and ("/"..artykul) or ""); local pudelko_modul=require("Module:Pudełko"); local czy_strona_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](strona); if(not czy_strona_niepoprawna)then local html_modul=require("Module:Html"); strona=html_modul.DecodeHtml(strona,true); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=strona_aktualna,}; local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,tekst=true,}; if(ile>0)then strona=ksiazkowe_modul["PełnaNazwaArtykułu"](strona); if(strona~=strona_aktualna)then local aktualna_nazwa_przestrzeni,aktualna_nazwa_przestrzeni_ksiazki,aktualna_nazwa_ksiazki,aktualna_nazwa_artykulu=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=DaneNazw(strona); --local aktualna_nazwa_przestrzeni,aktualna_nazwa_przestrzeni_ksiazki,aktualna_nazwa_ksiazki,aktualna_nazwa_artykulu=DaneNazw(strona_aktualna); self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni=aktualna_nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki=aktualna_nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki=aktualna_nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu=aktualna_nazwa_artykulu; if((aktualna_nazwa_przestrzeni~=nazwa_przestrzeni) or(aktualna_nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki) or(aktualna_nazwa_ksiazki~=nazwa_ksiazki) or(aktualna_nazwa_artykulu~=nazwa_artykulu) )then local zastepcza=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępcza",}}; local parametry_modul=require("Module:Parametry"); self.tabela_listy_danych_analizy_ksiazki.alternatywna=parametry_modul.CzyTak(zastepcza); if(not self.tabela_listy_danych_analizy_ksiazki.alternatywna)then self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca=true; end; end; end; end; end; end; end; local tablica_zmiennych={}; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={}; tablica_zmiennych.linkobiekt={}; local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, true,tablica_zmiennych); local parametry_modul=require("Module:Parametry"); if(parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki))then local stronicowyparser_numeracjaobiektowstron_modul=require("Module:StronicowyParser/NumeracjaObiektówStron"); stronicowyparser_numeracjaobiektowstron_modul.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; return self.tabela_listy_danych_analizy_ksiazki; end; function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow) ---- local czy_kodowanie=((nazwa_modulu_aktualna_czy_biezaca)or(tablica_analizy_obiektow_strony_dany_modul)); ---- if(not nazwa_modulu_aktualna_czy_biezaca)then if czy_artykul_korzystany then local nazwa_przestrzeni_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local nazwy_modul=require("Module:Nazwy"); nazwa_modulu_aktualna_czy_biezaca=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_aktualna_czy_biezaca,nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca,nazwa_ksiazki_aktualna_czy_biezaca,nazwa_artykulu_aktualna_czy_biezaca); else nazwa_modulu_aktualna_czy_biezaca=nazwa_strony; end; end; local html_modul=require("Module:Html"); nazwa_strony=html_modul.EncodeId(nazwa_strony); ----- local tablica_spisu_tresci=nil; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local szablonowe_modul=require("Module:Szablonowe"); local liczby_modul=require("Module:Liczby"); local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca); local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer(); local tablica_powtarzajacych_sie_elementow={}; local elementy_linku=nil; local frame=mw.getCurrentFrame(); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu; ---- local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; ---- local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; local tab_szablony_szablony_stron_zbiorczych=stronicowyparser_obiekty_modul.szablony_stron_zbiorczych; local tab_szablony_inne_szablony_stron_zbiorczych=stronicowyparser_obiekty_modul.inne_szablony_stron_zbiorczych; local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; ---- local tab_szablony_indeksowania=stronicowyparser_obiekty_modul.szablony_indeksowania; --- local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); ---- if(czy_kodowanie)then local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu; local szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2) if(czy_szablon)then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_strony,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu]; if(numer_parametru)then local parametr=tabela_parametrow_szablonu[numer_parametru]; if(parametr)then local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(parametr); if(naglowek)then return funkcja1(parametr); end; end; else local tabela_nazw={}; local function ParametrNR(numer) return stronicowyparser_potrzebne_modul.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw); end; local parametr=ParametrNR(1); if(parametr)then if(czy_liczyc)then local ile_poziom=tonumber(ParametrNR(5)) or 6; ile_poziom=(ile_poziom>0)and ile_poziom or 1; ile_poziom=(ile_poziom<=6) and ile_poziom or 6; local poziom=mw.ustring.rep("=",ile_poziom); local adres_ksiazki=ParametrNR(2); local nazwa_modulu_aktualna_czy_biezaca_strony=adres_ksiazki and ParametrNR(2) or nazwa_modulu_aktualna_czy_biezaca; local adres=nazwa_modulu_aktualna_czy_biezaca_strony..((parametr~="")and ("/"..parametr)or ""); adres=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(adres,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres; adres=html_modul.DecodeHtml(adres,true); parametr=ParametrNR(3) or parametr; local dodatek=ParametrNR(4); parametr=parametr..((dodatek) and (" "..dodatek) or ""); local ile,_=techniczne_modul.PoliczZbiory{[1]=adres,tekst=true,}; local ObiektKodNumer=function(szablon,obiekt) local tablica_analizy_obiektow_strony_dany_modul_numer=tablica_analizy_obiektow_strony_dany_modul[obiekt]; local kod_numer=1; for name,_ in pairs(tablica_analizy_obiektow_strony_dany_modul_numer)do kod_numer=math.max(kod_numer,name); end; kod_numer=kod_numer+1; tablica_analizy_obiektow_strony_dany_modul_numer[kod_numer]=szablon; local kod_szablonowe=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod_numer); return kod_szablonowe; end; if(ile>0)then local parametr=poziom..parametr..poziom; return funkcja1(parametr); else local szablon="<span style=\"color:red;\">"..parametr.."</span>"; local kod_parametr=ObiektKodNumer(szablon,"ZNACZNIK"); local parametr=poziom..kod_parametr..poziom; return funkcja1(parametr); end; else return funkcja1(parametr); end; end; end; end); elseif(czy_znacznik)then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((zawartosc)and(nazwa))then if(znaczniki_wprowadzenia_tekstu[nazwa])then return funkcja2(nazwa,zawartosc,atrybuty); end; end; end; end; tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(tekst_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,nil, function(szablon,obiekt,kod) local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");local czy_wikitabelka=(obiekt=="WIKITABELA"); if((czy_szablon)or(czy_znacznik)or(czy_wikitabelka))then local wynik=SpecjalneWprowadzeniaTekstu(szablon,obiekt,kod,czy_szablon,czy_znacznik,false,function()return true;end,function()return true;end); if(wynik)then return true,nil,nil,true;end; local rozdzial=mw.ustring.match(szablon,"\n(=[^\n]*[^%s=][^\n]*=)[^%S\n]*\n"); if(rozdzial)then local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial); if(naglowek)then return true,nil,nil,true; end; end; end; end, function(szablon,obiekt,kod) local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK"); local wynik=SpecjalneWprowadzeniaTekstu(szablon,obiekt,kod,czy_szablon,czy_znacznik,true, function(parametr) parametr=mw.ustring.gsub(parametr,"\n"," "); return "\n"..parametr.."\n "; end, function(nazwa,zawartosc,atrybuty) if((zawartosc)and(nazwa))then local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); zawartosc=mw.ustring.gsub(zawartosc,"\n"," "); local poziom_rowna=mw.ustring.rep("=",poziom); return "\n"..poziom_rowna..zawartosc..poziom_rowna.."\n "; end; end); if(wynik)then return wynik;end; return nil; end); end; local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu); local numeracja; ---- local KtorySzablonMaZwracacKategorieNaglowek=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[1] or nil; local KtorySzablonMaZwracacKategorieTekst=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[2] or nil; local CzyJestTakiProblemJakoElementTablicy=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[3] or nil; ---- local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania) --local nazwa_szablonu=szablonowe_modul["NazwaSzablonuWywołania"](szablon); local jest_naglowkuj_w_tekscie_rozdzialu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(jest_naglowkuj_w_tekscie_rozdzialu)then --local parametry_wywolania_szablonu_naglowek,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); local numeracja_aktualna=parametry_wywolania_szablonu["uchwyt"] or parametry_wywolania_szablonu[1]; ---- if(numeracja_aktualna)then local wartosc_elementu=jest_naglowkuj_w_tekscie_rozdzialu[1]; local lista_dwuelementowa=tabela_elementow_strony_kodow and stronicowyparser_zbieraniedanychstron_modul.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,kod) or nil; if(not lista_dwuelementowa)then numeracja_aktualna=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(numeracja_aktualna,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or numeracja_aktualna; numeracja_aktualna=html_modul.DecodeHtml(numeracja_aktualna,true); lista_dwuelementowa={}; lista_dwuelementowa[1]=numeracja_aktualna; else numeracja_aktualna=lista_dwuelementowa[1]; end; if(numeracja_aktualna~="")then table.insert(numeracja,lista_dwuelementowa); end; ---- if(powtorka>=1)then if(self.tabela_listy_danych_analizy_ksiazki)then KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu_wywolania); end; end; elseif(powtorka>=1)then KtorySzablonMaZwracacKategorieNaglowek(nil,nazwa_szablonu_wywolania); end; powtorka=powtorka+1; end; return powtorka; end; ---- local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; ---- local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- local jest_naglowkuj_w_tekscie_rozdzialu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu]; if(jest_naglowkuj_w_tekscie_rozdzialu)then local numeracja=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; if((numeracja)and(numeracja~=""))then local wartosc_elementu=jest_naglowkuj_w_tekscie_rozdzialu[1]; local lista_dwuelementowa=tabela_elementow_strony_kodow and stronicowyparser_zbieraniedanychstron_modul.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,kod) or nil; if(not lista_dwuelementowa)then numeracja=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(numeracja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu; numeracja=html_modul.DecodeHtml(numeracja,true); else numeracja=lista_dwuelementowa[1]; end; end; KtorySzablonMaZwracacKategorieTekst(numeracja,nazwa_szablonu); return true; end; return false; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return false; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return false; end); end; return false; end; local RefPrzypisowy=function(obiekt,kod) return "&#91;"..((obiekt~="") and (obiekt.." ") or "")..kod.."&#93;"; end; local specjalne_modul=require("Module:Specjalne"); local nazwa_strony_z_naglowkami=((not tylko_naglowek)and(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "") or ""); for naglowek_tab,text_rozdzialu,poziom_rozdzialu in iterator do local naglowek=naglowek_tab[1]; numeracja={}; if(czy_kodowanie)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(text_rozdzialu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local wynik=SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod); if(wynik)then break;end; end; end; local powtorka=0; local czy_szablony=nil; local czy_indeksowanie=nil; local function SzablonyWywolywane(szablon,obiekt,kod) return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) powtorka=SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); local czy_naglowek=tab_naglowki[nazwa_szablonu]; local czy_link;local nazwa_link; local function TempFunc(nazwa_szablonu) if(not czy_link)then czy_link=true; local str=mw.ustring.match(nazwa_szablonu,"^Link") nazwa_link=str and true or false; return nazwa_link; end; return nazwa_link; end; local czy_tak_naglowki=((czy_naglowek)and(TempFunc(nazwa_szablonu)and true or false) or ((not czy_naglowek)and nil)); if((czy_tak_naglowki~=nil)and(czy_tak_naglowki==false))then return ""; elseif((tab_szablony[nazwa_szablonu])or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])or(tab_szablony_inne_szablony_stron_zbiorczych[nazwa_szablonu])or((czy_tak_naglowki~=nil)and(czy_tak_naglowki==true)))then czy_szablony=true; local nazwa_link=TempFunc(nazwa_szablonu); if((not czy_artykul_korzystany)or(nazwa_link))then local nazwa_link=TempFunc(nazwa_szablonu); if(nazwa_link)then tabela_parametrow_szablonu[2]=tabela_parametrow_szablonu[2] or nazwa_artykulu; tabela_parametrow_szablonu[3]=tabela_parametrow_szablonu[3] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki); end; tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); if((self)and((self.tabela_listy_danych_analizy_ksiazki)))then local czy_link_lub_pobierz; if(czy_tak_naglowki==nil)then czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); else czy_link_lub_pobierz=czy_tak_naglowki or mw.ustring.match(nazwa_szablonu,"^Pobierz"); end; if(czy_link_lub_pobierz)then stronicowyparser_zbieraniedanychstron_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else stronicowyparser_zbieraniedanychstron_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; local str=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); return str; elseif((tab_szablony_strona_start[nazwa_szablonu])or(tab_szablony_szablony_stron_zbiorczych[nazwa_szablonu]))then return ""; elseif(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])then local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,kod); if(wynik)then return wynik;end; elseif((czy_indeksowanie)and(tab_szablony_indeksowania[nazwa_szablonu]))then return nil,true; end; return szablon; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return szablon; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return szablon; end); end; --naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywaneOgolny); --naglowek=mw.ustring.gsub(naglowek,"<ref>.-</ref>",""); --naglowek=Korekta(naglowek); ---naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end) local nazwa_rozdzialu_w_artykule; if(not czy_kodowanie)then nazwa_rozdzialu_w_artykule,naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,true,false); else local function SzablonyWywolywaneOgolny(naglowek) local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"]( { tekst=naglowek, ["nagłówek"]=true, nieklasycznie=true, kodowanie=false, ["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul, }, function(szablon,obiekt,kod) local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod); return szablon,wynik; end, function(szablon,obiekt,kod) return czy_indeksowanie; end); return naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne; end; czy_indeksowanie=true; local Znaczniki;local SzablonyStylowe;local ZnakiSpecjalne; naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=SzablonyWywolywaneOgolny(naglowek); nazwa_rozdzialu_w_artykule=naglowek; naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(tab_szablony_indeksowania[nazwa_szablonu])then return "";end; end); elseif(obiekt=="ZNACZNIK")then szablon=Znaczniki(szablon,"li"); szablon=Znaczniki(szablon,"ol"); szablon=Znaczniki(szablon,"ul"); return szablon; end; end); czy_indeksowanie=false; nazwa_rozdzialu_w_artykule=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_rozdzialu_w_artykule,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) if(obiekt=="ATRYBUTY")then return nil,true; elseif(obiekt=="SZABLON")then szablon=SzablonyWywolywaneOgolny(szablon); return szablon; end; --szablon=Korekta(szablon); --szablon=specjalne_modul["UsuńSzablonyStylów"](szablon); --szablon=specjalne_modul["UsuńZnakiSpecjalne"](szablon); return szablon; end); nazwa_rozdzialu_w_artykule=SzablonyStylowe(nazwa_rozdzialu_w_artykule); nazwa_rozdzialu_w_artykule=ZnakiSpecjalne(nazwa_rozdzialu_w_artykule); nazwa_rozdzialu_w_artykule=Znaczniki(nazwa_rozdzialu_w_artykule); if(not czy_szablony)then nazwa_rozdzialu_w_artykule=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu_w_artykule); nazwa_rozdzialu_w_artykule=html_modul.EncodeSpecjalneZnakiHtml(nazwa_rozdzialu_w_artykule); end; end; nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$",""); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[_%s]+"," "); naglowek=mw.ustring.gsub(naglowek,szablonowe_modul.NormaWzoruKodowaniaTekstu("REF(%a*)","(%d+)"),function(obiekt,kod) return "<sup>"..RefPrzypisowy(obiekt,kod).."</sup>"; end); naglowek=mw.ustring.gsub(naglowek,szablonowe_modul.NormaWzoruKodowaniaTekstu("POSTMATH"),function(kod) if(not wzory_zamiast_kodow)then return szablonowe_modul[((nazwa_strony)and(nazwa_strony=="")) and "NormaKoduKodowaniaTekstu" or "NormaKoduZakodowanegoWikiTekstu"]("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod); elseif(not czy_artykul_korzystany)then if(tablica_obiektow_strony_danych_kodow_specjalnych_modul)then if(tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then local kod=tonumber(kod); local szablon=tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][kod]; if(szablon)then szablon=frame:preprocess(szablon); return szablon; end; end; end end; return szablonowe_modul[czy_artykul_korzystany and "NormaKoduKodowaniaTekstu" or "NormaKoduZakodowanegoWikiTekstu"]("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod); end); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,szablonowe_modul.NormaWzoruKodowaniaTekstu("REF(%a*)"),function(obiekt,kod) return RefPrzypisowy(obiekt,kod); end); nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,szablonowe_modul.NormaWzoruKodowaniaTekstu("POSTMATH"),function(kod) kod=liczby_modul.LiczbaSzesnastkowaKodyBazySzablonowe(kod); return szablonowe_modul.NormaKoduZakodowanegoHtmlTekstu("postMath",kod); end); --nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";"); local numer_tego_samego_naglowka=1; --local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule); local numer_tego_samego_naglowka=1; for s=1,#tablica_powtarzajacych_sie_elementow,1 do local element=tablica_powtarzajacych_sie_elementow[s]; if(element==nazwa_rozdzialu_w_artykule)then numer_tego_samego_naglowka=numer_tego_samego_naglowka+1; end; end; if(numer_tego_samego_naglowka==1)then elementy_linku={nazwa_rozdzialu_w_artykule,naglowek}; else elementy_linku={nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek}; end; if((obiekty)and(numeracja))then for _,value_numeracja in ipairs(numeracja)do obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}}; end; end; if((poziom_rozdzialu or 0)>0)then local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu); tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule; if(tablica_spisu_tresci==nil)then tablica_spisu_tresci={}; tablica_spisu_tresci.nazwa_strony=nazwa_strony_z_naglowkami; end; tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony}; end; end; if(czy_kodowanie)then if(czy_artykul_korzystany)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not CzyJestTakiProblemJakoElementTablicy())then local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+"); if((linia_poczatkowa)and((mw.ustring.match(linia_poczatkowa,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*\n*")) or(mw.ustring.match(linia_poczatkowa,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$*"))) )then return tablica_spisu_tresci; end; local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(tekst_artykulu,"^(.-)\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or tekst_artykulu; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zerowy,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local wynik=SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod); if(wynik)then break;end; end; end; end; end; return tablica_spisu_tresci; end; return p; ojniuloi7oe5rolt83hhpygv9mrb68w Wikibooks:Moduły/Nazwy/Tom I 4 62922 556220 555726 2026-09-13T17:43:27Z Persino 2851 /* Funkcja biblioteczna */ 556220 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji{{dk}} {{nobold|{{Code|{{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}}}}}}, lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości: {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = Inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = Kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru: {{Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe:| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry:| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|komórka4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem: {{Parametr|link|tak}}, zostały obtoczone znacznikiem: {{Tag|code}}, dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr: {{Parametr|link|tak}}, w szablonie: {{s|NAZWASERWISU}}, mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr: {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie: {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|nagłówek1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> thep43owyifhdd5m8hcfrb9haprcozz 556221 556220 2026-09-13T17:43:59Z Persino 2851 /* Funkcja biblioteczna */ 556221 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji{{dk}} {{nobold|{{Code|{{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}}}}}}, lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe: | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości: {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = Inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = Kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru: {{Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe:| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry:| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|komórka4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem: {{Parametr|link|tak}}, zostały obtoczone znacznikiem: {{Tag|code}}, dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr: {{Parametr|link|tak}}, w szablonie: {{s|NAZWASERWISU}}, mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr: {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie: {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|nagłówek1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e0qllaxxrq563r6mzn8zoik97bnpfpo 556222 556221 2026-09-13T17:46:21Z Persino 2851 /* Funkcja biblioteczna */ 556222 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji{{dk}} {{nobold|{{Code|{{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}}}}}}, lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe: | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości: {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = Inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = Kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru: {{Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe:| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry:| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|komórka4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem: {{Parametr|link|tak}}, zostały obtoczone znacznikiem: {{Tag|code}}, dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr: {{Parametr|link|tak}}, w szablonie: {{s|NAZWASERWISU}}, mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr: {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie: {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|komórka1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> g1rkdisvtih1d8g82eu8cfqldp7mav0 Wikibooks:Moduły/Ramka 4 63231 556190 555819 2026-09-13T16:11:29Z Persino 2851 /* Funcje lokalne modułu */ 556190 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: {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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: {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkie. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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: {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 6 = 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...|nagłówek6=tak | 8 = {{Code|nie rozwiń}} | _8 = 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ń}}. | 9 = {{Code|1}} | _9 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = {{Code|przeskok}} | _4 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 5 = 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...|nagłówek5=tak | 6 = {{Code|nie rozwiń}} | _6 = 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ń}}. | 7 = {{Code|1}} | _7 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. | 3 = 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...|nagłówek3 =tak }} === 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 funkcji{{dk}} {{OpisParametrów | 1 = {{Code|1}} | _1 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. | 2 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}...|nagłówek2=tak }} === 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> m8780gmbfs950h3xbtj6svvoctp8k70 556191 556190 2026-09-13T16:14:58Z Persino 2851 Anulowano wersję [[Special:Diff/556190|556190]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 556191 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}} {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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}} {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkie. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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: {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 6 = 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...|nagłówek6=tak | 8 = {{Code|nie rozwiń}} | _8 = 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ń}}. | 9 = {{Code|1}} | _9 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = {{Code|przeskok}} | _4 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 5 = 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...|nagłówek5=tak | 6 = {{Code|nie rozwiń}} | _6 = 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ń}}. | 7 = {{Code|1}} | _7 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. | 3 = 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...|nagłówek3 =tak }} === 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 funkcji{{dk}} {{OpisParametrów | 1 = {{Code|1}} | _1 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. | 2 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}...|nagłówek2=tak }} === 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> ipx3eqlo25psty64muax12ox4ed69s5 556192 556191 2026-09-13T16:15:53Z Persino 2851 556192 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}} {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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}} {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkie. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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{{dk}} {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 6 = 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...|nagłówek6=tak | 8 = {{Code|nie rozwiń}} | _8 = 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ń}}. | 9 = {{Code|1}} | _9 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = {{Code|przeskok}} | _4 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 5 = 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...|nagłówek5=tak | 6 = {{Code|nie rozwiń}} | _6 = 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ń}}. | 7 = {{Code|1}} | _7 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. | 3 = 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...|nagłówek3 =tak }} === 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 funkcji{{dk}} {{OpisParametrów | 1 = {{Code|1}} | _1 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. | 2 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}...|nagłówek2=tak }} === 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> rrj97916vvdlirgi3bi31ylw9hftmz6 556193 556192 2026-09-13T16:17:08Z Persino 2851 /* {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} */ 556193 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}} {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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}} {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkie. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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{{dk}} {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 6 = 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...|nagłówek6=tak | 8 = {{Code|nie rozwiń}} | _8 = 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ń}}. | 9 = {{Code|1}} | _9 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = {{Code|przeskok}} | _4 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 5 = 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...|nagłówek5=tak | 6 = {{Code|nie rozwiń}} | _6 = 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ń}}. | 7 = {{Code|1}} | _7 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. | 3 = 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...|nagłówek3 =tak }} === 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 funkcji{{dk}} {{OpisParametrów | 1 = {{Code|1}} | _1 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. | 2 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}...|nagłówek2=tak }} === 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> 35ys4j66fwuddvh8pv004mc86966o0g 556210 556193 2026-09-13T17:24:34Z Persino 2851 /* {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} */ 556210 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}} {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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}} {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkie. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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{{dk}} {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 6 = 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:|nagłówek6=tak | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 8 = Inne:| nagłówek8=tak | 9 = {{Code|nie rozwiń}} | _9 = 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ń}}. | 10 = {{Code|1}} | _10 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = {{Code|przeskok}} | _4 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 5 = 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...|nagłówek5=tak | 6 = {{Code|nie rozwiń}} | _6 = 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ń}}. | 7 = {{Code|1}} | _7 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. | 3 = 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...|nagłówek3 =tak }} === 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 funkcji{{dk}} {{OpisParametrów | 1 = {{Code|1}} | _1 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. | 2 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}...|nagłówek2=tak }} === 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> eoxdw2hk0cug34zo0hew7n1s3ig35nv 556211 556210 2026-09-13T17:26:32Z Persino 2851 /* {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} */ 556211 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}} {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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}} {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkie. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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{{dk}} {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 6 = 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:|nagłówek6=tak | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 8 = Inne:| nagłówek8=tak | 9 = {{Code|nie rozwiń}} | _9 = 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ń}}. | 10 = {{Code|1}} | _10 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = 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:|nagłówek4=tak | 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 6 = Inne: |nagłówek6=tak | 7 = {{Code|nie rozwiń}} | _7 = 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ń}}. | 8 = {{Code|1}} | _8 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. | 3 = 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...|nagłówek3 =tak }} === 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 funkcji{{dk}} {{OpisParametrów | 1 = {{Code|1}} | _1 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. | 2 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}...|nagłówek2=tak }} === 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> srumr0c3my1jd962fe88piy4vu97ywd 556212 556211 2026-09-13T17:27:23Z Persino 2851 /* {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} */ 556212 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}} {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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}} {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkie. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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{{dk}} {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 6 = 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:|nagłówek6=tak | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 8 = Inne:| nagłówek8=tak | 9 = {{Code|nie rozwiń}} | _9 = 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ń}}. | 10 = {{Code|1}} | _10 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = 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:|nagłówek4=tak | 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 6 = Inne: |nagłówek6=tak | 7 = {{Code|nie rozwiń}} | _7 = 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ń}}. | 8 = {{Code|1}} | _8 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. | 3 = 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...|nagłówek3 =tak }} === 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 funkcji{{dk}} {{OpisParametrów | 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak | 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. }} === 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> lxt8x7yrmxldf4tdg5c2s8upwckblu0 556213 556212 2026-09-13T17:28:42Z Persino 2851 /* {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} */ 556213 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}} {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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}} {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkie. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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{{dk}} {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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> ; Parametry funkcji{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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{{dk}} {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 6 = 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:|nagłówek6=tak | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 8 = Inne:| nagłówek8=tak | 9 = {{Code|nie rozwiń}} | _9 = 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ń}}. | 10 = {{Code|1}} | _10 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = 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:|nagłówek4=tak | 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 6 = Inne: |nagłówek6=tak | 7 = {{Code|nie rozwiń}} | _7 = 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ń}}. | 8 = {{Code|1}} | _8 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = 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:|nagłówek2=tak | 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. }} === 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 funkcji{{dk}} {{OpisParametrów | 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak | 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. }} === 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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}} {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> 92g56130bucw48q4h6givm9628iz74k 556226 556213 2026-09-13T18:04:40Z Persino 2851 556226 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: {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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}} {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkie. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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: {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 6 = 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:|nagłówek6=tak | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 8 = Inne:| nagłówek8=tak | 9 = {{Code|nie rozwiń}} | _9 = 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ń}}. | 10 = {{Code|1}} | _10 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = 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:|nagłówek4=tak | 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 6 = Inne: |nagłówek6=tak | 7 = {{Code|nie rozwiń}} | _7 = 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ń}}. | 8 = {{Code|1}} | _8 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = 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:|nagłówek2=tak | 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. }} === 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 funkcji: {{OpisParametrów | 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak | 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. }} === 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: {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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: {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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: {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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: {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> a0dgnc5460pfnr24hl0a9gz63ikzdhq 556227 556226 2026-09-13T18:05:31Z Persino 2851 556227 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: {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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: {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkie. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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: {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 6 = 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:|nagłówek6=tak | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 8 = Inne:| nagłówek8=tak | 9 = {{Code|nie rozwiń}} | _9 = 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ń}}. | 10 = {{Code|1}} | _10 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = 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:|nagłówek4=tak | 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 6 = Inne: |nagłówek6=tak | 7 = {{Code|nie rozwiń}} | _7 = 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ń}}. | 8 = {{Code|1}} | _8 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = 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:|nagłówek2=tak | 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. }} === 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 funkcji: {{OpisParametrów | 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak | 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. }} === 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: {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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: {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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: {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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: {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> h4mmt3azjokykufusczavy3iegaslko 556228 556227 2026-09-13T18:06:22Z Persino 2851 /* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */ 556228 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: {{OpisParametrów | 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu. | 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = 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: {{OpisParametrów | 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak | 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera. | 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. | 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka,a nawet któreś z jego przodków. | 5 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _5 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki. | 6 = {{Code|potomek}} {{Patrz|potomek}} | _6 = 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ę. | 7 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _7 = 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). | 8 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _8 = 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ę. | 9 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _9 = 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. | 10 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _10 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję. | 11 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _11 = 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}}. | 12 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _12 = 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. | 13 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _13 = 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ń}}. | 14 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _14 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem. | 15 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _15 = 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. | 16 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _16 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu. | 17 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek17 = tak | 18 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _18 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}. | 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji. | 3 = Zmienne do mikroszablonów:|nagłówek3=tak | 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum. | 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum. }} Parametry ramki funkcji tablicy transportu modułu: {{OpisParametrów | 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity. | 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = 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. | 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}. | 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}. | 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek. | 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}. | 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak | 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = 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}}. | 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = 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 posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}: {{OpisParametrów | 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}. | 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek. | 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej. | 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania. }} 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: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = 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: {{OpisParametrów | 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = 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> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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: {{OpisParametrów | 1 = {{Code|frame}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}. | 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję. | 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję. | 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować. | 4 = {{Code|łącznik}} |_4 = 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. | 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 6 = 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:|nagłówek6=tak | 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 8 = Inne:| nagłówek8=tak | 9 = {{Code|nie rozwiń}} | _9 = 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ń}}. | 10 = {{Code|1}} | _10 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = 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}} {{OpisParametrów | 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami. | 2 = {{Code|łącznik}} | _2 = 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. | 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany. | 4 = 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:|nagłówek4=tak | 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg. | 6 = Inne: |nagłówek6=tak | 7 = {{Code|nie rozwiń}} | _7 = 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ń}}. | 8 = {{Code|1}} | _8 = 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}} {{OpisParametrów | 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}. | 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}. | 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}. }} ; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}} {{OpisParametrów | 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji. | 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = 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}} {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = 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:|nagłówek2=tak | 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego. }} === 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 funkcji: {{OpisParametrów | 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak | 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami. }} === 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: {{OpisParametrów | 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym). | 2 = {{Code|wzór}} | _2 = 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: {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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: {{OpisParametrów | 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego. | 2 = {{Code|numerowane}} | _2 = 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 użytą tą funkcją ==== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/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: {{OpisParametrów | 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem. | 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów. | 3 = {{Code|od dużej}} | _3 = 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> c7bo0db46mpaxuq0vfmescyqnsyx5d6 Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III 4 63512 556255 554603 2026-09-14T08:50:53Z Persino 2851 556255 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Linia do sprawdzenia. | 2 = {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} | _2 = Czy na początku linii mogą być odstępy. }} Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Jest to rozszerzenie funkcji: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}, który jest dla poszczególnych linii {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, na cały tekst {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przodu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Przeszukiwany tekst. | 2 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _2 = Początek wyszukiwania. | 3 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _3 = Koniec wyszukiwania. | 4 = {{Code|jak}} {{Patrz|jak}} |_4 = Odpowiadająca wartości: {{Code|true}}, gdy wyszukiwanie do tyłu, a przeciwnie do przodu. }} ; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}} * Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. * Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}. * Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, tzn. czy jest jednym z szablonów: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a w przypadku znacznika, czy jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} | _4 = Obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika. | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.. | 9 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _9 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. Z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, z pierwszej iteracji są zwykle parametry: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, lub wartości nilowe. Wyklucanie, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, jeśli tak, to funkcja zgłasza powodzenie i zwraca wyniki. Zmienna: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}. | 3 = {{Code|liczba_od}} | _3 = Jak w: {{LinkPatrz|liczba_od}}. | 4 = {{Code|liczba_do}} | _4 = Jak w: {{LinkPatrz|liczba_do}}, | 5 = {{Code|jak}} | _5 = Jak w: {{LinkPatrz|jak}}. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja przeszukuje tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, w pewnych zakresach: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} - {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według: {{Code|jak}} {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Jeżeli wszystko poszło dobrze, to zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: {{OpisParametrów | 1 = {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} | _1 = Początek wyszukanej linii. | 2 = {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} | _2 = Koniec wyszukiwanej linii. | 3 = {{Code|linia}} | _3 = Jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, czyli wyszukiwana linia spełniająca pewne kryteria. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lp1dp89zspea7zi5ofzlcarhjy1cc3y Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II 4 63917 556189 554589 2026-09-13T16:08:38Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 556189 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * Parametry z sekcji, są to elementy: ** {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} - złożone z rodzaju kodu i jego numeru, ** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} - kodowania kodów różnych obiektów. * Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: ** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} - parametry zakodowanego spisu. * Inne parametry: ** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, ** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artykuły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, lub dla wartości {{Code|nil}}. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, * Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu, ** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: ; Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}{{dk}} * Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia, * Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}, * Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}. * {{Code|czy_wszystkie_linki}} - czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}, * {{Code|czy_okladka}} - bez artykułów, ksiązki, będących okładkami, * {{Code|bez_innych_stron}} - bez stron będących nieartykułami danej książki. Wartość zwracana: * Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia. Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kr6r7qjuv1218899w7ad7is0hgyneqi 556200 556189 2026-09-13T16:59:49Z Persino 2851 556200 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 =Uuważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, lub dla wartości {{Code|nil}}. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| nagłówek1 = tak | 2 = Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:| nagłówek2 = tak | 3 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | nagłówek3 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|nagłówek1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | nagłówek1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|nagłówek2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|nagłówek3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest to przeszukiwant tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |nagłówek3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|nagłówek4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hj317z4x4kofimyjii6d2wdg48c57dc 556203 556200 2026-09-13T17:09:55Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 556203 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 =Uuważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, lub dla wartości {{Code|nil}}. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| nagłówek1 = tak | 2 = Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:| nagłówek2 = tak | 3 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka3 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|nagłówek1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | nagłówek1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|nagłówek2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|nagłówek3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest to przeszukiwant tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |nagłówek3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|nagłówek4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hnrceixz18vxdm568p5htoauj04812y 556205 556203 2026-09-13T17:13:56Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 556205 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 =Uuważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, lub dla wartości {{Code|nil}}. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak | 2 = Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:| nagłówek2 = tak | 3 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka3 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|nagłówek1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | nagłówek1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|nagłówek2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|nagłówek3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest to przeszukiwant tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |nagłówek3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|nagłówek4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6jyfnfv8ekbp9rzq59h19s2m4szi1tv 556206 556205 2026-09-13T17:15:26Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 556206 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 =Uuważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, lub dla wartości {{Code|nil}}. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|nagłówek1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | nagłówek1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|nagłówek2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|nagłówek3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest to przeszukiwant tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |nagłówek3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|nagłówek4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> sfhtvzvbw2bq53qyqtb6v058y5vlfyg 556207 556206 2026-09-13T17:16:18Z Persino 2851 /* {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} */ 556207 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 =Uuważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, lub dla wartości {{Code|nil}}. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|nagłówek2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|nagłówek3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest to przeszukiwant tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |nagłówek3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|nagłówek4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fmu13qj1zvsfw93877skykpgm5l1s59 556208 556207 2026-09-13T17:17:08Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */ 556208 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 =Uuważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, lub dla wartości {{Code|nil}}. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest to przeszukiwant tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |nagłówek3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|nagłówek4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> f892jw6ppp7gdh1ix5ngwc88t2bjsm6 556219 556208 2026-09-13T17:40:18Z Persino 2851 /* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */ 556219 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 =Uuważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, lub dla wartości {{Code|nil}}. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest to przeszukiwant tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3yc6wpnmitqiqe2if78velf20ecjnoc 556242 556219 2026-09-13T20:24:14Z Persino 2851 /* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */ 556242 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 =Uuważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, lub dla wartości {{Code|nil}}. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ec0jjx0zpmm6izfagygya9p594coy00 556251 556242 2026-09-13T21:16:03Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 556251 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, lub dla wartości {{Code|nil}}. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> a2hu0lu17p3f1otumvt851gdrslmr0p 556266 556251 2026-09-14T10:42:00Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 556266 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> di03g62vvbseatl0id7ecttk5lrqm85 556267 556266 2026-09-14T10:42:44Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 556267 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}. | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bepilp8j49g3cqy8gm9gq5rxbcoorli 556268 556267 2026-09-14T10:44:24Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 556268 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> f6u38er1zk2i5ui347bgs6dqk0i3kk3 556269 556268 2026-09-14T10:56:36Z Persino 2851 /* {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} */ 556269 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu: {{Code|SZABLON}}, linkują do artykułu w książce, lub obiekt: {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika, wtedy: {{Code|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}. Też może być, że dla tych samych typów obiektów, plus typ: {{Code|LINKZ}}, też jest sprawdzane, czy to jest w ogóle link, wtedy mamy: {{Code|numer_rodzaju_artykulu}} {{Code|<nowiki>></nowiki>}} {{Code|1}}, lub to nie jest link, wtedy ta wartość wskazuje na {{Code|nil}}. Ona robi to, analizuje to, przy pomocy funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, która sprawdza, czy to jest link, i zwraca jego pewne parametry. Funkcja dla podstrony książki, też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę, która jest podstroną podręcznika, za podręcznik, jeżeli jest spełnione {{Code|czy_podrecznik}} {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez '''mechanizm {{NS|l=tak|k=mw|w=tak}}''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: {{OpisParametrów | 1 = Parametry z sekcji, są to elementy:|nagłówek1=tak | 2 = {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} | _2 = Złożone z rodzaju kodu i jego numeru. | 3 = {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} | _3 = Kodowania kodów różnych obiektów. | 4 = Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany: | nagłówek4=tak | 5 = {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} | _5 = Parametry zakodowanego spisu. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} | _7 = Uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy. | 8 = {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} | _8 = Uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony. }} Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: {{OpisParametrów | 1 = {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} | _1 = Czy artykuł niegłówny. | 2 = {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} | _2 = Poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii. {{p|Możliwe wartości dla bieżącej wiki, to są: w przestrzeniach książkowych: {{Code|1}} - artykuły danej książki, {{Code|2}} - poza daną książką, i {{Code|3}} - strony w innych przestrzeniach niż książkowa, a dla niebieżącej wiki: {{Code|4}} - strony w przestrzeniach książkowych, i {{Code|5}} - poza nią, oraz linki zewnętrzne: {{Code|6}} - linki typu: {{Code|LINKZ}}.}} | 3 = {{Code|czy_podrecznik}} | _3 = Jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany. | 4 = {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} | _4 = czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. }} Funkcja oznacza artykuły (strony) - linki, danej książki określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równe: {{Code|1}}, i nie tylko, tzn. dla: {{Code|<nowiki>> 1</nowiki>}}, gdy to nie są jej podstrony, lub dla wartości {{Code|nil}}, gdy dany obiekt to nie jest link. Gdy strona nie jest linkiem, wtedy funkcja zrzucza wartości: {{Code|return nil,false;}}. A dla tego pierwszego, dzięki tej zmiennej: {{Code|czy_podrecznik}} {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za możliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe, dla obiektów: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, dla innych jej wartości, oznacza się linki jako za niepodręcznikowe. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące spisowe linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i linki wewnętrzne: {{Code|LINKW}}, jako normalne, jak i również zewnętrzne: {{Code|LINKZ}}. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli są, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.| komórka1 = tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Dla szablonu {{s|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta poprzednia funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego. W tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak }} Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: {{OpisParametrów | 1 = Są te same wartości zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. | komórka1 = tak }} Zwracane parametry przez funkcję: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: {{OpisParametrów | 1 = To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. | komórka1=tak }} == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, ale znalazła okładkę, bądź artykuł glówny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.|komórka1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii, elementami początku lub końca tekstu.|komórka2=tak | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.|komórka3=tak }} == {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} == Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzne: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}: | nagłówek1=tak | 2 = Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} | _2 = To jest przeszukiwany tekst. | 3 = Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. |komórka3=tak | 4 = Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.|komórka4=tak | 5 = {{Code|czy_wszystkie_linki}} | _5 = Czy ma wszystkie linki uwzględniać, do wartości zwracanej przez tą funkcję {{Code|true}}. | 6 = {{Code|czy_okladka}} | _6 = Bez artykułów, ksiązki, będących okładkami. | 7 = {{Code|bez_innych_stron}} | _7 = Bez stron będących nieartykułami danej książki. }} Wartość zwracana: {{OpisParametrów | 1 = Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.| nagłówek1=tak }} Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn. one muszą być w kodzie tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1iosdy0bfbmc0c40hnjq7uqyg51r8u3 Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I 4 63918 556156 554553 2026-09-13T12:58:00Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} */ 556156 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: * {{Code|tekst}} {{Patrz|tekst}} - tekst do przeszukania według wzoru, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania tekstu, * Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}: ** {{Code|liczba_od}} {{Patrz|liczba_od}} - od którego ma być przeszukiwany ciąg, ** {{Code|liczba_do}} {{Patrz|liczba_do}} - do którego ma być przeszukiwany ciąg, * {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} - czy przeszukiwanie ma się odbyć od tyłu, * {{Code|jak}} {{Patrz|jak}} - gdy {{Code|true}}, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku. Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu tego wzoru dla linii charakteryzujcych właśnie nią zostają dodane elementu początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, we wnętrzu linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: * Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}. Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> by2v43dkcvun35zrfkvpvltfl4vep20 556157 556156 2026-09-13T13:10:12Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} */ 556157 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: * {{Code|tekst}} {{Patrz|tekst}} - tekst do przeszukania według wzoru, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania tekstu, * Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}: ** {{Code|liczba_od}} {{Patrz|liczba_od}} - od którego ma być przeszukiwany ciąg, ** {{Code|liczba_do}} {{Patrz|liczba_do}} - do którego ma być przeszukiwany ciąg, * {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} - czy przeszukiwanie ma się odbyć od tyłu, * {{Code|jak}} {{Patrz|jak}} - gdy {{Code|true}}, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku. Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu tego wzoru dla linii charakteryzujcych właśnie nią zostają dodane elementu początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, we wnętrzu linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: * Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}. Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fxhfvjj2hcjlbrd8bd7hgmh985qbl3h 556158 556157 2026-09-13T13:11:51Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} */ 556158 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: * {{Code|tekst}} {{Patrz|tekst}} - tekst do przeszukania według wzoru, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania tekstu, * Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}: ** {{Code|liczba_od}} {{Patrz|liczba_od}} - od którego ma być przeszukiwany ciąg, ** {{Code|liczba_do}} {{Patrz|liczba_do}} - do którego ma być przeszukiwany ciąg, * {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} - czy przeszukiwanie ma się odbyć od tyłu, * {{Code|jak}} {{Patrz|jak}} - gdy {{Code|true}}, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku. Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LikPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu tego wzoru dla linii charakteryzujcych właśnie nią zostają dodane elementu początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, we wnętrzu linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: * Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}. Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qczyagyd4k3bnjrr7ypedu5uubblv2a 556159 556158 2026-09-13T13:12:13Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} */ 556159 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: * {{Code|tekst}} {{Patrz|tekst}} - tekst do przeszukania według wzoru, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania tekstu, * Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}: ** {{Code|liczba_od}} {{Patrz|liczba_od}} - od którego ma być przeszukiwany ciąg, ** {{Code|liczba_do}} {{Patrz|liczba_do}} - do którego ma być przeszukiwany ciąg, * {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} - czy przeszukiwanie ma się odbyć od tyłu, * {{Code|jak}} {{Patrz|jak}} - gdy {{Code|true}}, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku. Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu tego wzoru dla linii charakteryzujcych właśnie nią zostają dodane elementu początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, we wnętrzu linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: * Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}. Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1e032i2xnqbuhxhkf0554o8oh89teuv 556160 556159 2026-09-13T13:15:21Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} */ 556160 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: * {{Code|tekst}} {{Patrz|tekst}} - tekst do przeszukania według wzoru, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania tekstu, * Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}: ** {{Code|liczba_od}} {{Patrz|liczba_od}} - od którego ma być przeszukiwany ciąg, ** {{Code|liczba_do}} {{Patrz|liczba_do}} - do którego ma być przeszukiwany ciąg, * {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} - czy przeszukiwanie ma się odbyć od tyłu, * {{Code|jak}} {{Patrz|jak}} - gdy {{Code|true}}, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku. Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu tego wzoru dla linii charakteryzujcych właśnie nią, zostają dodane elementu na początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: * Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}. Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8s30mdiopzb3e55er8sjbyg5f5h2flf 556161 556160 2026-09-13T13:25:03Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} */ 556161 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: * {{Code|tekst}} {{Patrz|tekst}} - tekst do przeszukania według wzoru, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania tekstu, * Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}: ** {{Code|liczba_od}} {{Patrz|liczba_od}} - od którego ma być przeszukiwany ciąg, ** {{Code|liczba_do}} {{Patrz|liczba_do}} - do którego ma być przeszukiwany ciąg, * {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} - czy przeszukiwanie ma się odbyć od tyłu, gdy to przyjmuje odpowiadającej prawdziwości, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku, * {{Code|jak}} {{Patrz|jak}} - gdy to odpowiada prawdziwości, to wyszukiwanie, co najmniej ma się odbywać znak po znaku, gdy posiada przeciwną wartość, to dla wyszukiwanych tekstów niejednoznakowych, następne wyszukanie jest od ostatniego znaku poprzedniego wyszukania, a gdy jest jednoznakowy, to od następnego. Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu tego wzoru dla linii charakteryzujcych właśnie nią, zostają dodane elementu na początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: * Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}. Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fjasr9nz2ln2tlne1x81tyhxyqj8nkj 556162 556161 2026-09-13T13:28:08Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} */ 556162 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = Tekst do przeszukania według wzoru. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzor do przeszukiwania tekstu. | 3 = Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}:|nagłówek3=tak | 4 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _4 = od którego ma być przeszukiwany ciąg, | 5 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _5 = do którego ma być przeszukiwany ciąg, | 6 = Pozostałe zmienne: | nagłówek6=tak | 7 = {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} | _7 = czy przeszukiwanie ma się odbyć od tyłu, gdy to przyjmuje odpowiadającej prawdziwości, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku, | 8 = {{Code|jak}} {{Patrz|jak}} | _8 = gdy to odpowiada prawdziwości, to wyszukiwanie, co najmniej ma się odbywać znak po znaku, gdy posiada przeciwną wartość, to dla wyszukiwanych tekstów niejednoznakowych, następne wyszukanie jest od ostatniego znaku poprzedniego wyszukania, a gdy jest jednoznakowy, to od następnego. Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu tego wzoru dla linii charakteryzujcych właśnie nią, zostają dodane elementu na początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: * Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}. Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7fnddkxt4frhpo7klm0logpljp3g2pa 556163 556162 2026-09-13T13:28:33Z Persino 2851 556163 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = Tekst do przeszukania według wzoru. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzor do przeszukiwania tekstu. | 3 = Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}:|nagłówek3=tak | 4 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _4 = od którego ma być przeszukiwany ciąg, | 5 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _5 = do którego ma być przeszukiwany ciąg, | 6 = Pozostałe zmienne: | nagłówek6=tak | 7 = {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} | _7 = czy przeszukiwanie ma się odbyć od tyłu, gdy to przyjmuje odpowiadającej prawdziwości, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku, | 8 = {{Code|jak}} {{Patrz|jak}} | _8 = gdy to odpowiada prawdziwości, to wyszukiwanie, co najmniej ma się odbywać znak po znaku, gdy posiada przeciwną wartość, to dla wyszukiwanych tekstów niejednoznakowych, następne wyszukanie jest od ostatniego znaku poprzedniego wyszukania, a gdy jest jednoznakowy, to od następnego. }} Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu tego wzoru dla linii charakteryzujcych właśnie nią, zostają dodane elementu na początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: * Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}. Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> civfy217hj1dpztk6tiybrpz2b3ap4c 556164 556163 2026-09-13T13:29:51Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} */ 556164 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = Tekst do przeszukania według wzoru. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzor do przeszukiwania tekstu. | 3 = Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}:|nagłówek3=tak | 4 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _4 = od którego ma być przeszukiwany ciąg, | 5 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _5 = do którego ma być przeszukiwany ciąg, | 6 = Pozostałe zmienne: | nagłówek6=tak | 7 = {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} | _7 = czy przeszukiwanie ma się odbyć od tyłu, gdy to przyjmuje odpowiadającej prawdziwości, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku, | 8 = {{Code|jak}} {{Patrz|jak}} | _8 = gdy to odpowiada prawdziwości, to wyszukiwanie, co najmniej ma się odbywać znak po znaku, gdy posiada przeciwną wartość, to dla wyszukiwanych tekstów niejednoznakowych, następne wyszukanie jest od ostatniego znaku poprzedniego wyszukania, a gdy jest jednoznakowy, to od następnego. }} Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu tego wzoru dla linii charakteryzujcych właśnie nią, zostają dodane elementu na początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}.| nagłówek1=tak }} Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 92codc1u6vxl3cagjpgf333m0gsbltd 556165 556164 2026-09-13T13:32:27Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} */ 556165 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = Tekst do przeszukania według wzoru. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzor do przeszukiwania tekstu. | 3 = Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}:|nagłówek3=tak | 4 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _4 = Od którego ma być przeszukiwany ciąg. | 5 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _5 = Do którego ma być przeszukiwany ciąg. | 6 = Pozostałe zmienne: | nagłówek6=tak | 7 = {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} | _7 = Czy przeszukiwanie ma się odbyć od tyłu, gdy to przyjmuje odpowiadającej prawdziwości, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku. | 8 = {{Code|jak}} {{Patrz|jak}} | _8 = Gdy to odpowiada prawdziwości, to wyszukiwanie, co najmniej ma się odbywać znak po znaku, gdy posiada przeciwną wartość, to dla wyszukiwanych tekstów niejednoznakowych, następne wyszukanie jest od ostatniego znaku poprzedniego wyszukania, a gdy jest jednoznakowy, to od następnego. }} Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu tego wzoru dla linii charakteryzujcych właśnie nią, zostają dodane elementu na początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, we wnętrzu linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}.| nagłówek1=tak }} Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q195ocebieb5ch3jnp03uv2yfrum069 556174 556165 2026-09-13T14:46:07Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} */ 556174 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = Tekst do przeszukania według wzoru. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzor do przeszukiwania tekstu. | 3 = Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}:|nagłówek3=tak | 4 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _4 = Od którego ma być przeszukiwany ciąg. | 5 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _5 = Do którego ma być przeszukiwany ciąg. | 6 = Pozostałe zmienne: | nagłówek6=tak | 7 = {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} | _7 = Czy przeszukiwanie ma się odbyć od tyłu, gdy to przyjmuje odpowiadającej prawdziwości, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku. | 8 = {{Code|jak}} {{Patrz|jak}} | _8 = Gdy to odpowiada prawdziwości, to wyszukiwanie, co najmniej ma się odbywać znak po znaku, gdy posiada przeciwną wartość, to dla wyszukiwanych tekstów niejednoznakowych, następne wyszukanie jest od ostatniego znaku poprzedniego wyszukania, a gdy jest jednoznakowy, to od następnego. }} Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, na końce niego, dla linii charakteryzujcych właśnie nią, zostają dodane elementu początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, w odniesieniu do dowolnej linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}, bo inaczej byśmy przeszukiwali wiele kolejnych linii, ale też tak można. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}.| nagłówek1=tak }} Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> mqallyrkxoc8n4fv9mjlnnaz1x220y0 556175 556174 2026-09-13T14:54:17Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} */ 556175 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = Tekst do przeszukania według wzoru. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzor do przeszukiwania tekstu. | 3 = Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}:|nagłówek3=tak | 4 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _4 = Od którego ma być przeszukiwany ciąg. | 5 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _5 = Do którego ma być przeszukiwany ciąg. | 6 = Pozostałe zmienne: | nagłówek6=tak | 7 = {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} | _7 = Czy przeszukiwanie ma się odbyć od tyłu, gdy to przyjmuje odpowiadającej prawdziwości, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku. | 8 = {{Code|jak}} {{Patrz|jak}} | _8 = Gdy to odpowiada prawdziwości, to wyszukiwanie, co najmniej ma się odbywać znak po znaku, gdy posiada przeciwną wartość, to dla wyszukiwanych tekstów niejednoznakowych, następne wyszukanie jest od ostatniego znaku poprzedniego wyszukania, a gdy jest jednoznakowy, to od następnego. }} Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, na końce niego, dla linii charakteryzujcych właśnie nią, zostają dodane elementu początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, w odniesieniu do dowolnej linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}, bo inaczej byśmy przeszukiwali wiele kolejnych linii, ale też tak można. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}, dla wnętrza (zawartości) linii.| nagłówek1=tak }} Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2kqnrecdwjc4p6d0wwdf18epxt1ikyb 556209 556175 2026-09-13T17:17:53Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} */ 556209 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = Tekst do przeszukania według wzoru. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzor do przeszukiwania tekstu. | 3 = Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}:|nagłówek3=tak | 4 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _4 = Od którego ma być przeszukiwany ciąg. | 5 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _5 = Do którego ma być przeszukiwany ciąg. | 6 = Pozostałe zmienne: | nagłówek6=tak | 7 = {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} | _7 = Czy przeszukiwanie ma się odbyć od tyłu, gdy to przyjmuje odpowiadającej prawdziwości, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku. | 8 = {{Code|jak}} {{Patrz|jak}} | _8 = Gdy to odpowiada prawdziwości, to wyszukiwanie, co najmniej ma się odbywać znak po znaku, gdy posiada przeciwną wartość, to dla wyszukiwanych tekstów niejednoznakowych, następne wyszukanie jest od ostatniego znaku poprzedniego wyszukania, a gdy jest jednoznakowy, to od następnego. }} Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, na końce niego, dla linii charakteryzujcych właśnie nią, zostają dodane elementu początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, w odniesieniu do dowolnej linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}, bo inaczej byśmy przeszukiwali wiele kolejnych linii, ale też tak można. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}, dla wnętrza (zawartości) linii.| komórka1=tak }} Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> geeg0obyyx07jkwwwt8clg1hqsw3cdw 556252 556209 2026-09-14T08:17:33Z Persino 2851 /* {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} */ 556252 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} == Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}. Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu. Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = Tekst do przeszukania według wzoru. | 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzor do przeszukiwania tekstu. | 3 = Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}:|nagłówek3=tak | 4 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _4 = Od którego ma być przeszukiwany ciąg. | 5 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _5 = Do którego ma być przeszukiwany ciąg. | 6 = Pozostałe zmienne: | nagłówek6=tak | 7 = {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} | _7 = Czy przeszukiwanie ma się odbyć od tyłu, gdy to przyjmuje odpowiadającej prawdziwości, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku. | 8 = {{Code|jak}} {{Patrz|jak}} | _8 = Gdy to odpowiada prawdziwości, to wyszukiwanie, co najmniej ma się odbywać znak po znaku, gdy posiada przeciwną wartość, to dla wyszukiwanych tekstów niejednoznakowych, następne wyszukanie jest od ostatniego znaku poprzedniego wyszukania, a gdy jest jednoznakowy, to od następnego. }} Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}}, która ona nie dość, że przechytuje ciągu znakowe, ale też podaje, od którego, do którego, ten wyszukany ciąg wyszukał w podanym we wzorze. Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&le;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|&ge;}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową. Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez: {{LzLua|mw.ustring.find}}. W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez: {{LzLua|mw.ustring.find}}, spełniający nasze przedziały, jeżeli byłoby, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}. == {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} == Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, na końce niego, dla linii charakteryzujcych właśnie nią, zostają dodane elementu początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, w odniesieniu do dowolnej linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}, bo inaczej byśmy przeszukiwali wiele kolejnych linii, ale też tak można. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}, dla wnętrza (zawartości) linii.| komórka1=tak }} Zwracane parametry: {{OpisParametrów | 1 = Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. | komórka1 = tak }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qi8xd6rxzzqy1q0f58przbvkjgonaw9 Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV 4 63919 556256 554608 2026-09-14T09:11:16Z Persino 2851 556256 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały, dodatnie równaniowe, centrowane szablonowo lub znacznikowo i nagłówkowe - poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Tekst artykułu zakodowanego, w którym wyszukuje się pewne rozdziały, według: {{LinkZobaczTeż|rozdziały}}. | 2 = {{Code|liczba_od}} | _2 = Jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 3 = {{Code|liczba_do}} | _3 = Jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 4 = {{Code|czy_od_tylu}} | _4 = Jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 5 = {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} | _5 = Funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, tzn.: {{Code|SZABLON}}, {{Code|ZNACZNIK}} i trzeciego nieokreślonej żadnym kodem, w postaci trzech konstrukcji szczególnych wykorzystujących tę ogólną funkcję, aby uzyskać pewne zmienne, by później je wykorzystać w: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|wzor}} | _1 = Wzór dla tekstu, który przeszukujemy. | 2 = {{Code|czy_rozdzial_rownaniowy_dodatni}} | _2 = Czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy, to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków. | 3 = {{Code|__FUNKCJA1}} | _3 = Funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów tekstu zakodowanego, czy też może jako jedyny parametr nagłówek. | 4 = {{Code|__FUNKCJA2}} | _4 = Funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecim parametrem, funkcją, której wynik zwracamy bezpośrednią z tej funkcji. }} === Tabele użyte do szczególnego użycia funkcji {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}} === W funkcji sa trzy szczególne wywołania tej funkcji. ; Szablony rozdziałów centrowania{{dk}} * Tabela: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. * Tabela: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|HNumer}}. ; Znaczniki rozdziałów{{dk}} * Znaczniki centrowania jak: {{Tag|center}}. * Tabela: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, określa znaczniki nagłówków takie jak: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. ; Rozdziały dadatnie równaniowe{{dk}} * Nie potrzebują żadnej tabeli {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele. | 2 = {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}| _2 = Spis przed jego analizą, co wtedy z niego powstaje {{LinkZobaczTeż|spis_naglowka}}. | 3 = {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} | _3 = spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje. | 4 = {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} | _4 = Poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. }} Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji. | 2 = {{Code|spis_naglowka}} | _2 = Ten parametr jest liczony dla nieistniejącego parametru: {{Code|czy_spis_tresci}} {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji. | 3 = {{Code|spis_naglowka_stare}} | _3 = Spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{Code|spis_naglowka}} {{LinkPatrz|spis_naglowka}}. | 4 = {{Code|spis_naglowka_poziom}} | _4 = Poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. }} ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzając, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. ; Uzyskanie elementów parametrów kodu bazy{{dk}} * Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym jest to wywołanie nagłówka, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: ** {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe centrowania, typu: {{s|Ce}}, {{s|Centruj}} i {{s|Center}} oraz nagłówki sztucznego rozdziału, takich jak: {{s|HNumer}}, ** lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe centrowania, typu: {{Tag|center}}, oraz znaczniki nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, *: oraz także uzykanego z drugiego numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. * Wnętrze uzyskujemy z dwóch poprzednich parametrów z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. ; Wyszukiwane trzy elementy zawartości obiektu{{dk}} * Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także znajduje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, przeciwnie tylko te trzy. * A jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. ; Zrzucane przez funkcje parametry{{dk}} * Tam jakiś pierwszy link musi być zakodowany bezpośrednio w takiej zawartości, aby zwrócił te cztery parametry, przeciwnie zrzuca tylko te trzy, a czwarty przyjmuje wartość nilową, to się dzieje, w przypadku pośredniego zakodowania tego linku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = Paramtry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek4 = tak | 5 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Opis parametrów zwracanych dokończające jego dokumentację: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} | _4 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne) i {{Code|LINKZ}} (linki zewnętrzne). | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _7 = Dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. }} Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> ; Wykrywane linki różnego typu{{dk}} * Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki są zdefiniowane według: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> * Inne linki mogące być użyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * Jeszcze są wspomniane linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. ; Przykład wywołania fukcji{{dk}} Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> tgyrht4joz6qoqoj1tbayntj2dcfquh 556270 556256 2026-09-14T11:09:01Z Persino 2851 /* {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} */ 556270 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały: dodatnie równaniowe, centrowane szablonowo lub znacznikowo, i nagłówkowe - poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Tekst artykułu zakodowanego, w którym wyszukuje się pewne rozdziały, według: {{LinkZobaczTeż|rozdziały}}. | 2 = {{Code|liczba_od}} | _2 = Jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 3 = {{Code|liczba_do}} | _3 = Jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 4 = {{Code|czy_od_tylu}} | _4 = Jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 5 = {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} | _5 = Funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, tzn.: {{Code|SZABLON}}, {{Code|ZNACZNIK}} i trzeciego nieokreślonej żadnym kodem, w postaci trzech konstrukcji szczególnych wykorzystujących tę ogólną funkcję, aby uzyskać pewne zmienne, by później je wykorzystać w: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|wzor}} | _1 = Wzór dla tekstu, który przeszukujemy. | 2 = {{Code|czy_rozdzial_rownaniowy_dodatni}} | _2 = Czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy, to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków. | 3 = {{Code|__FUNKCJA1}} | _3 = Funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów tekstu zakodowanego, czy też może jako jedyny parametr nagłówek. | 4 = {{Code|__FUNKCJA2}} | _4 = Funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecim parametrem, funkcją, której wynik zwracamy bezpośrednią z tej funkcji. }} === Tabele użyte do szczególnego użycia funkcji {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}} === W funkcji sa trzy szczególne wywołania tej funkcji. ; Szablony rozdziałów centrowania{{dk}} * Tabela: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. * Tabela: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|HNumer}}. ; Znaczniki rozdziałów{{dk}} * Znaczniki centrowania jak: {{Tag|center}}. * Tabela: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, określa znaczniki nagłówków takie jak: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. ; Rozdziały dadatnie równaniowe{{dk}} * Nie potrzebują żadnej tabeli {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele. | 2 = {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}| _2 = Spis przed jego analizą, co wtedy z niego powstaje {{LinkZobaczTeż|spis_naglowka}}. | 3 = {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} | _3 = spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje. | 4 = {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} | _4 = Poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. }} Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji. | 2 = {{Code|spis_naglowka}} | _2 = Ten parametr jest liczony dla nieistniejącego parametru: {{Code|czy_spis_tresci}} {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji. | 3 = {{Code|spis_naglowka_stare}} | _3 = Spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{Code|spis_naglowka}} {{LinkPatrz|spis_naglowka}}. | 4 = {{Code|spis_naglowka_poziom}} | _4 = Poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. }} ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzając, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. ; Uzyskanie elementów parametrów kodu bazy{{dk}} * Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym jest to wywołanie nagłówka, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: ** {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe centrowania, typu: {{s|Ce}}, {{s|Centruj}} i {{s|Center}} oraz nagłówki sztucznego rozdziału, takich jak: {{s|HNumer}}, ** lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe centrowania, typu: {{Tag|center}}, oraz znaczniki nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, *: oraz także uzykanego z drugiego numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. * Wnętrze uzyskujemy z dwóch poprzednich parametrów z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. ; Wyszukiwane trzy elementy zawartości obiektu{{dk}} * Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także znajduje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, przeciwnie tylko te trzy. * A jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. ; Zrzucane przez funkcje parametry{{dk}} * Tam jakiś pierwszy link musi być zakodowany bezpośrednio w takiej zawartości, aby zwrócił te cztery parametry, przeciwnie zrzuca tylko te trzy, a czwarty przyjmuje wartość nilową, to się dzieje, w przypadku pośredniego zakodowania tego linku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = Paramtry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek4 = tak | 5 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Opis parametrów zwracanych dokończające jego dokumentację: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} | _4 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne) i {{Code|LINKZ}} (linki zewnętrzne). | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _7 = Dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. }} Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> ; Wykrywane linki różnego typu{{dk}} * Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki są zdefiniowane według: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> * Inne linki mogące być użyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * Jeszcze są wspomniane linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. ; Przykład wywołania fukcji{{dk}} Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> a2lwi9b8fynb8jwxg08prnhh5ps5ikk 556271 556270 2026-09-14T11:09:54Z Persino 2851 /* {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} */ 556271 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały: dodatnie równaniowe, centrowane szablonowo lub znacznikowo, i nagłówkowe - poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Tekst artykułu zakodowanego, w którym wyszukuje się pewne rozdziały, według: {{LinkZobaczTeż|rozdziały}}. | 2 = {{Code|liczba_od}} | _2 = Jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 3 = {{Code|liczba_do}} | _3 = Jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 4 = {{Code|czy_od_tylu}} | _4 = Jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 5 = {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} | _5 = Funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Funkcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, tzn.: {{Code|SZABLON}}, {{Code|ZNACZNIK}} i trzeciego nieokreślonej żadnym kodem, w postaci trzech konstrukcji szczególnych wykorzystujących tę ogólną funkcję, aby uzyskać pewne zmienne, by później je wykorzystać w: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|wzor}} | _1 = Wzór dla tekstu, który przeszukujemy. | 2 = {{Code|czy_rozdzial_rownaniowy_dodatni}} | _2 = Czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy, to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków. | 3 = {{Code|__FUNKCJA1}} | _3 = Funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów tekstu zakodowanego, czy też może jako jedyny parametr nagłówek. | 4 = {{Code|__FUNKCJA2}} | _4 = Funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecim parametrem, funkcją, której wynik zwracamy bezpośrednią z tej funkcji. }} === Tabele użyte do szczególnego użycia funkcji {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}} === W funkcji sa trzy szczególne wywołania tej funkcji. ; Szablony rozdziałów centrowania{{dk}} * Tabela: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. * Tabela: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|HNumer}}. ; Znaczniki rozdziałów{{dk}} * Znaczniki centrowania jak: {{Tag|center}}. * Tabela: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, określa znaczniki nagłówków takie jak: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. ; Rozdziały dadatnie równaniowe{{dk}} * Nie potrzebują żadnej tabeli {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele. | 2 = {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}| _2 = Spis przed jego analizą, co wtedy z niego powstaje {{LinkZobaczTeż|spis_naglowka}}. | 3 = {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} | _3 = spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje. | 4 = {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} | _4 = Poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. }} Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji. | 2 = {{Code|spis_naglowka}} | _2 = Ten parametr jest liczony dla nieistniejącego parametru: {{Code|czy_spis_tresci}} {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji. | 3 = {{Code|spis_naglowka_stare}} | _3 = Spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{Code|spis_naglowka}} {{LinkPatrz|spis_naglowka}}. | 4 = {{Code|spis_naglowka_poziom}} | _4 = Poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. }} ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzając, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. ; Uzyskanie elementów parametrów kodu bazy{{dk}} * Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym jest to wywołanie nagłówka, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: ** {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe centrowania, typu: {{s|Ce}}, {{s|Centruj}} i {{s|Center}} oraz nagłówki sztucznego rozdziału, takich jak: {{s|HNumer}}, ** lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe centrowania, typu: {{Tag|center}}, oraz znaczniki nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, *: oraz także uzykanego z drugiego numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. * Wnętrze uzyskujemy z dwóch poprzednich parametrów z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. ; Wyszukiwane trzy elementy zawartości obiektu{{dk}} * Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także znajduje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, przeciwnie tylko te trzy. * A jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. ; Zrzucane przez funkcje parametry{{dk}} * Tam jakiś pierwszy link musi być zakodowany bezpośrednio w takiej zawartości, aby zwrócił te cztery parametry, przeciwnie zrzuca tylko te trzy, a czwarty przyjmuje wartość nilową, to się dzieje, w przypadku pośredniego zakodowania tego linku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = Paramtry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek4 = tak | 5 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Opis parametrów zwracanych dokończające jego dokumentację: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} | _4 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne) i {{Code|LINKZ}} (linki zewnętrzne). | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _7 = Dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. }} Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> ; Wykrywane linki różnego typu{{dk}} * Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki są zdefiniowane według: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> * Inne linki mogące być użyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * Jeszcze są wspomniane linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. ; Przykład wywołania fukcji{{dk}} Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 65hdaf87x77h45svy7z78fl7wbyoax7 556272 556271 2026-09-14T11:12:37Z Persino 2851 /* {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} */ 556272 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały: dodatnie równaniowe, centrowane szablonowo lub znacznikowo, i nagłówkowe - poprzez szablony, czy znaczniki nagłówków. * Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, * Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, ** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo, * Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, * Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Definicja skrótowa funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} | _1 = Tekst artykułu zakodowanego, w którym wyszukuje się pewne rozdziały, według: {{LinkZobaczTeż|rozdziały}}. | 2 = {{Code|liczba_od}} | _2 = Jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 3 = {{Code|liczba_do}} | _3 = Jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 4 = {{Code|czy_od_tylu}} | _4 = Jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. | 5 = {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} | _5 = Funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to. | 6 = Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:| nagłówek6 = tak | 7 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _7 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} === {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} === Funkcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych. Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, tzn.: {{Code|SZABLON}}, {{Code|ZNACZNIK}} i trzeciego nieokreślonej żadnym kodem, w postaci trzech konstrukcji szczególnych wykorzystujących tę ogólną funkcję, aby uzyskać pewne zmienne, by później je wykorzystać w: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, do zwracania danych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|wzor}} | _1 = Wzór dla tekstu, który przeszukujemy. | 2 = {{Code|czy_rozdzial_rownaniowy_dodatni}} | _2 = Czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy, to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków. | 3 = {{Code|__FUNKCJA1}} | _3 = Funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów tekstu zakodowanego, czy też może jako jedyny parametr nagłówek. | 4 = {{Code|__FUNKCJA2}} | _4 = Funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecim parametrem, funkcją, której wynik zwracamy bezpośrednią z tej funkcji. }} === Tabele użyte do szczególnego użycia funkcji {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}} === W funkcji sa trzy szczególne wywołania tej funkcji. ; Szablony rozdziałów centrowania{{dk}} * Tabela: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. * Tabela: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, tutaj są szablony, jako nazwy kluczy, takie jak: {{s|HNumer}}. ; Znaczniki rozdziałów{{dk}} * Znaczniki centrowania jak: {{Tag|center}}. * Tabela: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, określa znaczniki nagłówków takie jak: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. ; Rozdziały dadatnie równaniowe{{dk}} * Nie potrzebują żadnej tabeli {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Funkcja zwracająca parametry === Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego. Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy. ==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ==== Funkcja przyjmuje i przygotowuje parametry do zwrócenia. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Początek i koniec danego typu napisu wprowadzenia tekstu. | 2 = {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}| _2 = Spis przed jego analizą, co wtedy z niego powstaje {{LinkZobaczTeż|spis_naglowka}}. | 3 = {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} | _3 = Spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje. | 4 = {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} | _4 = Poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje. }} Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu: <syntaxhighlight lang="lua"> return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału: {{OpisParametrów | 1 = {{Code|liczba_start}} i {{Code|liczba_koniec}} | _1 = Jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji. | 2 = {{Code|spis_naglowka}} | _2 = Ten parametr jest liczony dla nieistniejącego parametru: {{Code|czy_spis_tresci}} {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji. | 3 = {{Code|spis_naglowka_stare}} | _3 = Spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{Code|spis_naglowka}} {{LinkPatrz|spis_naglowka}}. | 4 = {{Code|spis_naglowka_poziom}} | _4 = Poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych. }} ==== Dalszy opis funkcji ==== Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego: <syntaxhighlight lang="lua"> return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom); </syntaxhighlight> Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych. Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzając, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów. == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej. ; Uzyskanie elementów parametrów kodu bazy{{dk}} * Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym jest to wywołanie nagłówka, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: ** {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe centrowania, typu: {{s|Ce}}, {{s|Centruj}} i {{s|Center}} oraz nagłówki sztucznego rozdziału, takich jak: {{s|HNumer}}, ** lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe centrowania, typu: {{Tag|center}}, oraz znaczniki nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, *: oraz także uzykanego z drugiego numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. * Wnętrze uzyskujemy z dwóch poprzednich parametrów z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. ; Wyszukiwane trzy elementy zawartości obiektu{{dk}} * Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także znajduje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, przeciwnie tylko te trzy. * A jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych. ; Zrzucane przez funkcje parametry{{dk}} * Tam jakiś pierwszy link musi być zakodowany bezpośrednio w takiej zawartości, aby zwrócił te cztery parametry, przeciwnie zrzuca tylko te trzy, a czwarty przyjmuje wartość nilową, to się dzieje, w przypadku pośredniego zakodowania tego linku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = Paramtry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek4 = tak | 5 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Opis parametrów zwracanych dokończające jego dokumentację: {{OpisParametrów | 1 = Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek1 = tak | 2 = {{Code|szablon}} | _2 = Jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}. | 3 = Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}: | nagłówek3 = tak | 4 = {{Code|obiekt}} | _4 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne) i {{Code|LINKZ}} (linki zewnętrzne). | 5 = {{Code|kod}} | _5 = Jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. | 6 = Inne parametry: | nagłówek6 = tak | 7 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _7 = Dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu. }} Kod zwracanych parametrów funkcji: <syntaxhighlight lang="lua"> return szablon,obiekt,kod,dalszy_tekst; </syntaxhighlight> ; Wykrywane linki różnego typu{{dk}} * Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki są zdefiniowane według: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, } </syntaxhighlight> * Inne linki mogące być użyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, * Jeszcze są wspomniane linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}. ; Przykład wywołania fukcji{{dk}} Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli: <syntaxhighlight lang="lua"> local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rbc5af3zguweq8ikf3cw4m1u20ch9jy Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V 4 63920 556257 554633 2026-09-14T09:40:25Z Persino 2851 556257 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek6 = tak | 7 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty: | komórka7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej ksiązki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w niej wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lkzxcc2h01cffmi91vqwakbp8qcbnen 556258 556257 2026-09-14T09:45:44Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} */ 556258 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej ksiązki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w niej wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q4o7gbzka3rg13tt73wekdpqrtso3au 556273 556258 2026-09-14T11:25:14Z Persino 2851 /* {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} */ 556273 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej ksiązki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w niej wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nhbx9yqlisotk0j0imn8rsih6fnh9ix 556274 556273 2026-09-14T11:29:27Z Persino 2851 /* {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} */ 556274 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej ksiązki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w niej wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gqjqbfsxsnwsku5ghenfm805304x7d4 556275 556274 2026-09-14T11:31:09Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} */ 556275 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej ksiązki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w niej wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dwzdk5vhkdnliyk1yasmj5wue1ipocm 556276 556275 2026-09-14T11:33:24Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} */ 556276 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej ksiązki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w niej wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4gcgsefn0gqalws6h0ea1c97zaehf13 556277 556276 2026-09-14T11:39:24Z Persino 2851 /* Etap drugi */ 556277 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w niej wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0z2du76gpyfoxew6rblvucr1gtqh8v4 556278 556277 2026-09-14T11:43:18Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} */ 556278 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w nim wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> eyd9w8a5rbukg9qfb1az31t6cl87h1g 556279 556278 2026-09-14T11:44:15Z Persino 2851 /* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} */ 556279 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w nim wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7fur617fq1xt3mil4t61zmdlswk3izn 556280 556279 2026-09-14T11:46:34Z Persino 2851 /* Uzyskanie linii według ogólnego wzoru */ 556280 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w nim wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linią, byłoby takie coś pomiędzy ewentualnie znakami nowych linii, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3pqjf24z7q9dq7famdt5etjqayfdjgs 556281 556280 2026-09-14T11:49:52Z Persino 2851 /* Brak dopasowania linii */ 556281 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w nim wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linią, byłoby takie coś pomiędzy ewentualnie znakami nowych linii, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii zgłasza niedopasowanie, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7lc5my1lzrgsbvd038j91lcjwb1iqvs 556282 556281 2026-09-14T11:52:23Z Persino 2851 /* Rozdział równaniowy */ 556282 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w nim wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linią, byłoby takie coś pomiędzy ewentualnie znakami nowych linii, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii zgłasza niedopasowanie, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa być takich rozdziałów dopasowywać. Ma dopasowywać tylko normalne linie niebędące pozycjami listy lub rozdziałami równaniowymi. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lqmoqalobxl9q2y6n9vpvt67gzx53mv 556283 556282 2026-09-14T11:58:42Z Persino 2851 /* {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} */ 556283 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w nim wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linią, byłoby takie coś pomiędzy ewentualnie znakami nowych linii, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii zgłasza niedopasowanie, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa być takich rozdziałów dopasowywać. Ma dopasowywać tylko normalne linie niebędące pozycjami listy lub rozdziałami równaniowymi. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwrac wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0kmki9xnx6zeat62322kxmkxro4pawz Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI 4 63921 556261 554562 2026-09-14T09:53:15Z Persino 2851 556261 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.PoliczKoniecZakodowanegoTekstuArtykularnego}}{{Code|p.PoliczKoniecZakodowanegoTekstuArtykularnego}} == == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje, od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisPaarametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|liczba_start}} | _2 = Jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony we specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy niej, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia, i znajduje tą nazwę, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jego numeru: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnych zdefiniowanym osobnych rozdziałach, które mieszczą się w spisie książki, i są to pewne napisy wprowadzenia tekstu z tymi osobnymi tymi, czego dotyczą, co usuwamy, co zostawiamy, w ich, w ich napisach wprowadzenia tekstu, wraz ich zawartościami, a te teksty, to właśnie modyfikujemy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, | 2 = {{Code|tab_wzor}} {{Patrz|tab_wzor}} | _2 = Tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście: {{Code|tekst}} {{LinkPatrz|tekst}}, | 3 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka3 = tak }} Wartość zwracana: {{OpisParametrów | 1 = Jest to zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury, w którym usuwaliśmy pewne elementy. | komórka1 = tak }} Ten wzor do wydzielania tekstu z drugą wartością logiczną, jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego, od pierwszej pozycji tego wydzielonego tekstu, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możemy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są: * Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}: <syntaxhighlight lang="lua"> p.szablony_przypisowe={ ["Przypisy"]=true, ["Uwagi"]=true, ["Przypisy-lista"]=true, }; </syntaxhighlight> * Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 78t4bakjxn7libdviuhcu381cahb0vs 556262 556261 2026-09-14T09:53:28Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 556262 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.PoliczKoniecZakodowanegoTekstuArtykularnego}}{{Code|p.PoliczKoniecZakodowanegoTekstuArtykularnego}} == == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje, od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|liczba_start}} | _2 = Jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony we specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy niej, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia, i znajduje tą nazwę, a więc tego szablonu. Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jego numeru: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnych zdefiniowanym osobnych rozdziałach, które mieszczą się w spisie książki, i są to pewne napisy wprowadzenia tekstu z tymi osobnymi tymi, czego dotyczą, co usuwamy, co zostawiamy, w ich, w ich napisach wprowadzenia tekstu, wraz ich zawartościami, a te teksty, to właśnie modyfikujemy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, | 2 = {{Code|tab_wzor}} {{Patrz|tab_wzor}} | _2 = Tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście: {{Code|tekst}} {{LinkPatrz|tekst}}, | 3 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka3 = tak }} Wartość zwracana: {{OpisParametrów | 1 = Jest to zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury, w którym usuwaliśmy pewne elementy. | komórka1 = tak }} Ten wzor do wydzielania tekstu z drugą wartością logiczną, jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego, od pierwszej pozycji tego wydzielonego tekstu, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możemy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są: * Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}: <syntaxhighlight lang="lua"> p.szablony_przypisowe={ ["Przypisy"]=true, ["Uwagi"]=true, ["Przypisy-lista"]=true, }; </syntaxhighlight> * Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fqpq6lfdqvsg9gy1ye6z0z6vuzc69he Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII 4 63922 556259 554548 2026-09-14T09:48:27Z Persino 2851 /* Parametry funkcji */ 556259 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | -1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak }} === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję. ===== Znajdowanie pierwszego artykułu książki ===== Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła: <syntaxhighlight lang="lua"> ---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania: ---- lista_szablon, ---- odstepy_poczatku_rozdzialu, ---- przerwa_szablon, ---- obiekt_szablon, ---- kod_szablon, ---- dalszy_tekst; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; ---- Uruchomienie nieskończonej petli wyszukiwania, która wewwnętrznie zostanie zakończona; while(true)do ---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję; local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); </syntaxhighlight> Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są: * {{Code|lista_szablon}} {{Patrz|lista_szablon}} - odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale, * {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} - jest to cią odstępów bez znaku nowej linii {{Code|\n}}, * {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} - elementy te i {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdowwać się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego, * {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} - jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligente i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}}, * {{Code|kod_szablon}} {{Patrz|kod_szablon}} - numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią; * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - jest to dalszy kod, za pierwszym takim zauważalnym kodzie, modułu: {{Code|{{m|Szablonowe}}}}. ====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ====== Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znaajdować kolejne możliwości: * Pozycje akceptowalne przez funkcje listy: ** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{LinkPatrz|lista_szablon}}, i pustym: {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu, ** Pozycje listy, gdzie: {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}}, ** Dowolna lista dwukropkowa, czyli {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}}, * Początkowe znaki linii dalszego tekstu {{LinkPatrz|dalszy_tekst}}, tzn: nie jest {{Code|>}}, gdy: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|przerwa_szablon}}, są puste, * Dowolny rozdział równaniowy dodatni, gdy zmienne: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a {{LinkPatrz|dalszy_tekst}}, końcy się też na to. ; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}} * Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy {{LinkPatrz|obiekt_szablon}} i {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody linków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, * Szukamy w ich zawartości elementów, tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. * W ten sposób znaleźliźmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}. ==== Punkt końcowy ==== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0b8e7qde2wit7egjdo71ilhn3cmo53p 556260 556259 2026-09-14T09:48:46Z Persino 2851 /* Parametry funkcji */ 556260 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak }} === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję. ===== Znajdowanie pierwszego artykułu książki ===== Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła: <syntaxhighlight lang="lua"> ---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania: ---- lista_szablon, ---- odstepy_poczatku_rozdzialu, ---- przerwa_szablon, ---- obiekt_szablon, ---- kod_szablon, ---- dalszy_tekst; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; ---- Uruchomienie nieskończonej petli wyszukiwania, która wewwnętrznie zostanie zakończona; while(true)do ---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję; local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); </syntaxhighlight> Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są: * {{Code|lista_szablon}} {{Patrz|lista_szablon}} - odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale, * {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} - jest to cią odstępów bez znaku nowej linii {{Code|\n}}, * {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} - elementy te i {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdowwać się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego, * {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} - jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligente i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}}, * {{Code|kod_szablon}} {{Patrz|kod_szablon}} - numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią; * {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - jest to dalszy kod, za pierwszym takim zauważalnym kodzie, modułu: {{Code|{{m|Szablonowe}}}}. ====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ====== Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znaajdować kolejne możliwości: * Pozycje akceptowalne przez funkcje listy: ** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{LinkPatrz|lista_szablon}}, i pustym: {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu, ** Pozycje listy, gdzie: {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}}, ** Dowolna lista dwukropkowa, czyli {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}}, * Początkowe znaki linii dalszego tekstu {{LinkPatrz|dalszy_tekst}}, tzn: nie jest {{Code|>}}, gdy: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|przerwa_szablon}}, są puste, * Dowolny rozdział równaniowy dodatni, gdy zmienne: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a {{LinkPatrz|dalszy_tekst}}, końcy się też na to. ; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}} * Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy {{LinkPatrz|obiekt_szablon}} i {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody linków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, * Szukamy w ich zawartości elementów, tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. * W ten sposób znaleźliźmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}. ==== Punkt końcowy ==== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 157te6j3p20beq01yeq84bs8il47dsy Wikibooks:Moduły/Parametry/Tom XIII 4 63979 556147 556137 2026-09-13T12:28:40Z Persino 2851 /* Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości */ 556147 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === Funkcja rożróżnia różne typy danych, w zależności od niego dostosowuje procedurę sprawdzenia, czy zwrócić wartość odpowiadająca prawdzie, czy fałszowi. ==== Parametr typu {{Code|string}} ==== Czy wartość jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie: {{Code|zmienna}} {{Patrz|zmienna}}, z parametrami: {{Code|parametry}} {{Patrz|parametry}}, czy ma zwracać wartość odpowiadającą prawdzie lub fałszowi. === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak: {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość: {{Code|false/nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej: {{Code|tak}}, lub {{Code|nil}} - co w wikikodzie odpowiada wartości równej ciągowi pustemu, parametrów ramki, w wikikodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, funkcji: w ramce: {{Code|{{m|Parametry|CzyTakCiąg}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p["CzyTakCiąg"]}}, i w ramce: {{Code|{{m|Parametry|CzyTak}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane, jak i nienazwane. W przypadku nazwanych parametrów, to tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wikikodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{LinkŚródtytuł|p.CzyTak}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wikikodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg składający się z samych odstępów - wartość zwracana ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg nie składający się z samych znaków i odstępów ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak żadnych znaków ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](""); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Funkcja sprawdza, czy niestrimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e9vis0s76p6tmmd1iy247qed0k5um7h 556148 556147 2026-09-13T12:38:41Z Persino 2851 /* Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości */ 556148 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === Funkcja rożróżnia różne typy danych, w zależności od niego dostosowuje procedurę sprawdzenia, czy zwrócić wartość odpowiadająca prawdzie, czy fałszowi. ==== Parametr typu {{Code|string}} ==== Czy wartość jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie: {{Code|zmienna}} {{Patrz|zmienna}}, z parametrami: {{Code|parametry}} {{Patrz|parametry}}, czy ma zwracać wartość odpowiadającą prawdzie lub fałszowi. === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak: {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość: {{Code|false/nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej: {{Code|tak}}, lub {{Code|nil}} - co w wikikodzie odpowiada wartości równej ciągowi pustemu, parametrów ramki, w wikikodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, funkcji: w ramce: {{Code|{{m|Parametry|CzyTakCiąg}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p["CzyTakCiąg"]}}, i w ramce: {{Code|{{m|Parametry|CzyTak}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną: {{Code|parametr}} {{Patrz|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane, jak i nienazwane. W przypadku nazwanych parametrów, to tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela: {{Code|argsfun}} {{Patrz|argsfun}}. Na podstawie tak zebranych danych możemy uruchomić funkcję: <syntaxhighlight lang="lua"> return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Ona na podstawie wartości parametru funkcja: {{Code|funkcja}} {{LimkPatrz|funkcja}}, tymi możliwymi są: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, to wtedy tamjest sprawdzane prawdziwość wyniku zwróconego przez funkcję: {{Code|parametr}} {{LinkPatrz|parametr}}, w przypadku funkcji, której dajemy parametr: {{Code|argsfun}} {{LinkPatrz|argsfun}}, w tej pierwwszej odbywa się to pośrednio za pomocą tej drugiej, a w tej drugiej, to już bezpośrednio. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wikikodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{LinkŚródtytuł|p.CzyTak}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wikikodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg składający się z samych odstępów - wartość zwracana ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg nie składający się z samych znaków i odstępów ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak żadnych znaków ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](""); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Funkcja sprawdza, czy niestrimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 79l6mg0twbjuilhk7rrwf2mzj3h8686 556149 556148 2026-09-13T12:39:10Z Persino 2851 /* Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości */ 556149 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === Funkcja rożróżnia różne typy danych, w zależności od niego dostosowuje procedurę sprawdzenia, czy zwrócić wartość odpowiadająca prawdzie, czy fałszowi. ==== Parametr typu {{Code|string}} ==== Czy wartość jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie: {{Code|zmienna}} {{Patrz|zmienna}}, z parametrami: {{Code|parametry}} {{Patrz|parametry}}, czy ma zwracać wartość odpowiadającą prawdzie lub fałszowi. === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak: {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość: {{Code|false/nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej: {{Code|tak}}, lub {{Code|nil}} - co w wikikodzie odpowiada wartości równej ciągowi pustemu, parametrów ramki, w wikikodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, funkcji: w ramce: {{Code|{{m|Parametry|CzyTakCiąg}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p["CzyTakCiąg"]}}, i w ramce: {{Code|{{m|Parametry|CzyTak}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną: {{Code|parametr}} {{Patrz|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane, jak i nienazwane. W przypadku nazwanych parametrów, to tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela: {{Code|argsfun}} {{Patrz|argsfun}}. Na podstawie tak zebranych danych możemy uruchomić funkcję: <syntaxhighlight lang="lua"> return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Ona na podstawie wartości parametru funkcja: {{Code|funkcja}} {{LinkPatrz|funkcja}}, tymi możliwymi są: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, to wtedy tamjest sprawdzane prawdziwość wyniku zwróconego przez funkcję: {{Code|parametr}} {{LinkPatrz|parametr}}, w przypadku funkcji, której dajemy parametr: {{Code|argsfun}} {{LinkPatrz|argsfun}}, w tej pierwwszej odbywa się to pośrednio za pomocą tej drugiej, a w tej drugiej, to już bezpośrednio. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wikikodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{LinkŚródtytuł|p.CzyTak}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wikikodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg składający się z samych odstępów - wartość zwracana ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg nie składający się z samych znaków i odstępów ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak żadnych znaków ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](""); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Funkcja sprawdza, czy niestrimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> oxom305vdrzeqb1exjsm879qdd5bq8w 556150 556149 2026-09-13T12:40:26Z Persino 2851 /* {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} */ 556150 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === Funkcja rożróżnia różne typy danych, w zależności od niego dostosowuje procedurę sprawdzenia, czy zwrócić wartość odpowiadająca prawdzie, czy fałszowi. ==== Parametr typu {{Code|string}} ==== Czy wartość jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie: {{Code|zmienna}} {{Patrz|zmienna}}, z parametrami: {{Code|parametry}} {{Patrz|parametry}}, czy ma zwracać wartość odpowiadającą prawdzie lub fałszowi. === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak: {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość: {{Code|false/nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej: {{Code|tak}}, lub {{Code|nil}} - co w wikikodzie odpowiada wartości równej ciągowi pustemu, parametrów ramki, w wikikodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, funkcji: w ramce: {{Code|{{m|Parametry|CzyTakCiąg}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p["CzyTakCiąg"]}}, i w ramce: {{Code|{{m|Parametry|CzyTak}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} {{Patrz|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy: {{Code|args}} {{LinkPatrz|args}}, funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną: {{Code|parametr}} {{Patrz|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane, jak i nienazwane. W przypadku nazwanych parametrów, to tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela: {{Code|argsfun}} {{Patrz|argsfun}}. Na podstawie tak zebranych danych możemy uruchomić funkcję: <syntaxhighlight lang="lua"> return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Ona na podstawie wartości parametru funkcja: {{Code|funkcja}} {{LinkPatrz|funkcja}}, tymi możliwymi są: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, to wtedy tamjest sprawdzane prawdziwość wyniku zwróconego przez funkcję: {{Code|parametr}} {{LinkPatrz|parametr}}, w przypadku funkcji, której dajemy parametr: {{Code|argsfun}} {{LinkPatrz|argsfun}}, w tej pierwwszej odbywa się to pośrednio za pomocą tej drugiej, a w tej drugiej, to już bezpośrednio. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wikikodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{LinkŚródtytuł|p.CzyTak}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wikikodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg składający się z samych odstępów - wartość zwracana ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg nie składający się z samych znaków i odstępów ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak żadnych znaków ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](""); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Funkcja sprawdza, czy niestrimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> aoxu84ohg8ee2xwwhq3miclz7a5ib8m 556151 556150 2026-09-13T12:41:43Z Persino 2851 /* Atrapa funkcji parametrów ramki rodzica (szablonu) */ 556151 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === Funkcja rożróżnia różne typy danych, w zależności od niego dostosowuje procedurę sprawdzenia, czy zwrócić wartość odpowiadająca prawdzie, czy fałszowi. ==== Parametr typu {{Code|string}} ==== Czy wartość jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie: {{Code|zmienna}} {{Patrz|zmienna}}, z parametrami: {{Code|parametry}} {{Patrz|parametry}}, czy ma zwracać wartość odpowiadającą prawdzie lub fałszowi. === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak: {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość: {{Code|false/nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej: {{Code|tak}}, lub {{Code|nil}} - co w wikikodzie odpowiada wartości równej ciągowi pustemu, parametrów ramki, w wikikodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, funkcji: w ramce: {{Code|{{m|Parametry|CzyTakCiąg}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p["CzyTakCiąg"]}}, i w ramce: {{Code|{{m|Parametry|CzyTak}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} {{Patrz|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy: {{Code|args}} {{LinkPatrz|args}}, funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną: {{Code|parametr}} {{Patrz|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane, jak i nienazwane. W przypadku nazwanych parametrów, to tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela: {{Code|argsfun}} {{Patrz|argsfun}}. Na podstawie tak zebranych danych możemy uruchomić funkcję: <syntaxhighlight lang="lua"> return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Ona na podstawie wartości parametru funkcja: {{Code|funkcja}} {{LinkPatrz|funkcja}}, tymi możliwymi są: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, to wtedy tamjest sprawdzane prawdziwość wyniku zwróconego przez funkcję: {{Code|parametr}} {{LinkPatrz|parametr}}, w przypadku funkcji, której dajemy parametr: {{Code|argsfun}} {{LinkPatrz|argsfun}}, w tej pierwwszej odbywa się to pośrednio za pomocą tej drugiej, a w tej drugiej, to już bezpośrednio. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wikikodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{LinkŚródtytuł|p.CzyTak}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąć zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wikikodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg składający się z samych odstępów - wartość zwracana ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg nie składający się z samych znaków i odstępów ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak żadnych znaków ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](""); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Funkcja sprawdza, czy niestrimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8a3hqvhssfefvkiyet8lyywadga5i5z 556152 556151 2026-09-13T12:44:07Z Persino 2851 556152 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === Funkcja rożróżnia różne typy danych, w zależności od niego dostosowuje procedurę sprawdzenia, czy zwrócić wartość odpowiadająca prawdzie, czy fałszowi. ==== Parametr typu {{Code|string}} ==== Czy wartość jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie: {{Code|zmienna}} {{Patrz|zmienna}}, z parametrami: {{Code|parametry}} {{Patrz|parametry}}, czy ma zwracać wartość odpowiadającą prawdzie lub fałszowi. === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak: {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość: {{Code|false/nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej: {{Code|tak}}, lub {{Code|nil}} - co w wikikodzie odpowiada wartości równej ciągowi pustemu, parametrów ramki, w wikikodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, funkcji: w ramce: {{Code|{{m|Parametry|CzyTakCiąg}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p["CzyTakCiąg"]}}, i w ramce: {{Code|{{m|Parametry|CzyTak}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} {{Patrz|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy: {{Code|args}} {{LinkPatrz|args}}, funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną: {{Code|parametr}} {{Patrz|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane, jak i nienazwane. W przypadku nazwanych parametrów, to tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela: {{Code|argsfun}} {{Patrz|argsfun}}. Na podstawie tak zebranych danych możemy uruchomić funkcję: <syntaxhighlight lang="lua"> return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Ona na podstawie wartości parametru funkcja: {{Code|funkcja}} {{LinkPatrz|funkcja}}, tymi możliwymi są: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, to wtedy tamjest sprawdzane prawdziwość wyniku zwróconego przez funkcję: {{Code|parametr}} {{LinkPatrz|parametr}}, w przypadku funkcji, której dajemy parametr: {{Code|argsfun}} {{LinkPatrz|argsfun}}, w tej pierwwszej odbywa się to pośrednio za pomocą tej drugiej, a w tej drugiej, to już bezpośrednio. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wikikodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{LinkŚródtytuł|p.CzyTak}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąć zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} {{Patrz|zmienna}} | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} {{Patrz|parametry}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wikikodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg składający się z samych odstępów - wartość zwracana ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg nie składający się z samych znaków i odstępów ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak żadnych znaków ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](""); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Funkcja sprawdza, czy niestrimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} - {{LinkPatrz|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} - {{LinkPatrz|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> eepgmwzjnt6saj08sf6tqcxt6wjhljo 556153 556152 2026-09-13T12:45:07Z Persino 2851 /* Typu {{Code|function}} */ 556153 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === Funkcja rożróżnia różne typy danych, w zależności od niego dostosowuje procedurę sprawdzenia, czy zwrócić wartość odpowiadająca prawdzie, czy fałszowi. ==== Parametr typu {{Code|string}} ==== Czy wartość jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie: {{Code|zmienna}} {{LinkPatrz|zmienna}}, z parametrami: {{Code|parametry}} {{LinkPatrz|parametry}}, czy ma zwracać wartość odpowiadającą prawdzie lub fałszowi. === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak: {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość: {{Code|false/nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej: {{Code|tak}}, lub {{Code|nil}} - co w wikikodzie odpowiada wartości równej ciągowi pustemu, parametrów ramki, w wikikodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, funkcji: w ramce: {{Code|{{m|Parametry|CzyTakCiąg}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p["CzyTakCiąg"]}}, i w ramce: {{Code|{{m|Parametry|CzyTak}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} {{Patrz|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy: {{Code|args}} {{LinkPatrz|args}}, funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną: {{Code|parametr}} {{Patrz|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane, jak i nienazwane. W przypadku nazwanych parametrów, to tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela: {{Code|argsfun}} {{Patrz|argsfun}}. Na podstawie tak zebranych danych możemy uruchomić funkcję: <syntaxhighlight lang="lua"> return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Ona na podstawie wartości parametru funkcja: {{Code|funkcja}} {{LinkPatrz|funkcja}}, tymi możliwymi są: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, to wtedy tamjest sprawdzane prawdziwość wyniku zwróconego przez funkcję: {{Code|parametr}} {{LinkPatrz|parametr}}, w przypadku funkcji, której dajemy parametr: {{Code|argsfun}} {{LinkPatrz|argsfun}}, w tej pierwwszej odbywa się to pośrednio za pomocą tej drugiej, a w tej drugiej, to już bezpośrednio. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wikikodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{LinkŚródtytuł|p.CzyTak}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąć zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} {{Patrz|zmienna}} | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} {{Patrz|parametry}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wikikodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg składający się z samych odstępów - wartość zwracana ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg nie składający się z samych znaków i odstępów ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak żadnych znaków ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](""); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Funkcja sprawdza, czy niestrimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} - {{LinkPatrz|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} - {{LinkPatrz|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nt6um3csj9l414uz23jl3ceji6jeoyd 556154 556153 2026-09-13T12:47:41Z Persino 2851 /* {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} */ 556154 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === Funkcja rożróżnia różne typy danych, w zależności od niego dostosowuje procedurę sprawdzenia, czy zwrócić wartość odpowiadająca prawdzie, czy fałszowi. ==== Parametr typu {{Code|string}} ==== Czy wartość jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie: {{Code|zmienna}} {{LinkPatrz|zmienna}}, z parametrami: {{Code|parametry}} {{LinkPatrz|parametry}}, czy ma zwracać wartość odpowiadającą prawdzie lub fałszowi. === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak: {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość: {{Code|false/nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej: {{Code|tak}}, lub {{Code|nil}} - co w wikikodzie odpowiada wartości równej ciągowi pustemu, parametrów ramki, w wikikodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, funkcji: w ramce: {{Code|{{m|Parametry|CzyTakCiąg}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p["CzyTakCiąg"]}}, i w ramce: {{Code|{{m|Parametry|CzyTak}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} {{Patrz|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy: {{Code|args}} {{LinkPatrz|args}}, funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną: {{Code|parametr}} {{Patrz|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane, jak i nienazwane. W przypadku nazwanych parametrów, to tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela: {{Code|argsfun}} {{Patrz|argsfun}}. Na podstawie tak zebranych danych możemy uruchomić funkcję: <syntaxhighlight lang="lua"> return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Ona na podstawie wartości parametru funkcja: {{Code|funkcja}} {{LinkPatrz|funkcja}}, tymi możliwymi są: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, to wtedy tamjest sprawdzane prawdziwość wyniku zwróconego przez funkcję: {{Code|parametr}} {{LinkPatrz|parametr}}, w przypadku funkcji, której dajemy parametr: {{Code|argsfun}} {{LinkPatrz|argsfun}}, w tej pierwwszej odbywa się to pośrednio za pomocą tej drugiej, a w tej drugiej, to już bezpośrednio. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wikikodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{LinkŚródtytuł|p.CzyTak}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąć zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} {{Patrz|zmienna}} | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} {{Patrz|parametry}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}} {{LinkPatrz|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wikikodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg składający się z samych odstępów - wartość zwracana ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg nie składający się z samych znaków i odstępów ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak żadnych znaków ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](""); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Funkcja sprawdza, czy niestrimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} - {{LinkPatrz|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} - {{LinkPatrz|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4v2vbioyrefe96wx39fxngczvb3u7b8 556155 556154 2026-09-13T12:48:48Z Persino 2851 /* {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} */ 556155 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === Funkcja rożróżnia różne typy danych, w zależności od niego dostosowuje procedurę sprawdzenia, czy zwrócić wartość odpowiadająca prawdzie, czy fałszowi. ==== Parametr typu {{Code|string}} ==== Czy wartość jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie: {{Code|zmienna}} {{LinkPatrz|zmienna}}, z parametrami: {{Code|parametry}} {{LinkPatrz|parametry}}, czy ma zwracać wartość odpowiadającą prawdzie lub fałszowi. === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak: {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość: {{Code|false/nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej: {{Code|tak}}, lub {{Code|nil}} - co w wikikodzie odpowiada wartości równej ciągowi pustemu, parametrów ramki, w wikikodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, funkcji: w ramce: {{Code|{{m|Parametry|CzyTakCiąg}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p["CzyTakCiąg"]}}, i w ramce: {{Code|{{m|Parametry|CzyTak}}}}, funkcji bibliotecznej: {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} {{Patrz|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy: {{Code|args}} {{LinkPatrz|args}}, funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną: {{Code|parametr}} {{Patrz|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane, jak i nienazwane. W przypadku nazwanych parametrów, to tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela: {{Code|argsfun}} {{Patrz|argsfun}}. Na podstawie tak zebranych danych możemy uruchomić funkcję: <syntaxhighlight lang="lua"> return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Ona na podstawie wartości parametru funkcja: {{Code|funkcja}} {{LinkPatrz|funkcja}}, tymi możliwymi są: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, to wtedy tamjest sprawdzane prawdziwość wyniku zwróconego przez funkcję: {{Code|parametr}} {{LinkPatrz|parametr}}, w przypadku funkcji, której dajemy parametr: {{Code|argsfun}} {{LinkPatrz|argsfun}}, w tej pierwwszej odbywa się to pośrednio za pomocą tej drugiej, a w tej drugiej, to już bezpośrednio. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wikikodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{LinkŚródtytuł|p.CzyTak}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąć zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} {{Patrz|zmienna}} | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} {{Patrz|parametry}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}} {{LinkPatrz|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wikikodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg składający się z samych odstępów - wartość zwracana ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. ==== Ciąg nie składający się z samych znaków i odstępów ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTakCiąg/}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. ==== Brak żadnych znaków ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](""); </syntaxhighlight> ===== 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/Parametry/CzyTakCiąg/}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Funkcja sprawdza, czy niestrimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} - {{LinkPatrz|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} - {{LinkPatrz|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest on wykorzystywany, gdy powyższy element: {{Code|zmienna}} {{LinkPatrz|zmienna}}, jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> ===== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===== * Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Parametry/CzyTak/}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> ===== 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/Parametry/CzyTak/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bz6k9z0cw47kuajihvtvvtq4bim5ch4 Wikibooks:Moduły/Parametry/Tom XIV 4 63980 556146 556138 2026-09-13T12:08:34Z Persino 2851 556146 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów, ściągające parametry z ramki, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, rodzica lub ich dziecka, tablicy albo tabeli parametrów funkcji. == {{Śródtytuł|p.PobierzFrameEwentualnieParent}}{{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{LinkŚródtytuł|p.PobierzArgsParametry}}. == {{Śródtytuł|p.PobierzArgsParametry}}{{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{LinkŚródtytuł|p.PobierzFrameEwentualnieParent}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w: {{LinkŚródtytuł|p.PobierzFrameEwentualnieParent}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w: {{LinkŚródtytuł|p.PobierzArgsParametry}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Śródtytuł|p.PobierzParametryRamki}}{{Code|p.PobierzParametryRamki}} == Funkcja służy do pobierania parametrów ramki dziecka, nie rodzica. Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> Też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{LinkŚródtytuł|p.PobierzParametryRamki}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Śródtytuł|p.PobierzElementNumerowanyZFrameLubTablicy}}{{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}: * które nie musi być tablicą ramki tablicy transportu, tylko może być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty sposób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Śródtytuł|p.PobierzParametr}}{{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana, i jego druga wartość w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji jeszcze inną funkcję, wykorzystaną w nim. To jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}}, i jakie podaliśmy parametry, tzn. czy ona jest tablicą. ==== Gdy funkcja ramki {{Code|pf.getParent}} istnieje lub posiada jego fałszywą definicję ==== Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). ==== Gdy funkcja ramki istnieje, i gdy: {{Code|czy_frame_lub_parent}}, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji fałszywej ramki parametrów rodzica ==== Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja: {{LinkŚródtytuł|p.PobierzArgsParametry}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). ==== Wartość nietablicowa funkcji parametrów ==== Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. ==== Przypadek nietablicowa wartości, ale nilowej funkcji parametrów ==== Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. ==== Fałszywa funkcja ramki parametrów rodzica ==== Ta funkcja parametrów działa dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. ==== Brak definicji funkcji ramki parametrów rodzica ==== Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{LinkŚróddtytuł|p.PobierzArgsParametry}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{LinkŚródtytuł|p.PobierzArgsParametry}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> k02xpmzcrlj95sgfdhydx0jjck31nox Wikipedysta:Persino/Gadget-Vector-2022.css/skin-night.css 2 64122 556176 555729 2026-09-13T14:59:38Z Persino 2851 556176 css text/css @media screen{ html.skin-theme-clientpref-night > body .vector-dropdown .vector-dropdown-content{ box-shadow:none; border:1px solid white; } html.skin-theme-clientpref-night > body .vector-page-toolbar-container .vector-dropdown{ border-bottom:1px solid black; } html.skin-theme-clientpref-night > body > .vector-header-container, html.skin-theme-clientpref-night > body > .vector-header-container *{ background-color:black; color:white; border-color:white; } html.skin-theme-clientpref-night > body #pt-userpage-2 a:not(.mw-selflink){ color:white; } html.skin-theme-clientpref-night > body > .mw-page-container, html.skin-theme-clientpref-night > body > .mw-page-container > .mw-page-container-inner{ filter:grayscale(100%); } html.skin-theme-clientpref-night > body.action-view td.diff-deletedline .diffchange, html.skin-theme-clientpref-night > body.action-submit td.diff-deletedline .diffchange{ background: var(--background-color-content-removed,#ffe49c); filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body.action-view td.diff-addedline .diffchange, html.skin-theme-clientpref-night > body.action-submit td.diff-addedline .diffchange{ background: var(--background-color-content-added,#a3d3ff); filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body .imeselector, html.skin-theme-clientpref-night > body .imeselector *{ background-color:black !important; color:white !important; border-color:white !important; filter:invert(0) grayscale(100%); } html.skin-theme-clientpref-night > body .imeselector .uls-ime-more-settings-link{ height: calc( 100% - 6px ); } html.skin-theme-clientpref-night > body .uls-ime-menu-settings-item{ padding-bottom:7px; } html.skin-theme-clientpref-night > body, html.skin-theme-clientpref-night > body > .mw-page-container, html.skin-theme-clientpref-night > body > .mw-page-container *{ color:white !important; background-color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink), html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):link, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):visited, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):focus, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):hover, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):active{ color:white !important; background-color:black !important; border-color:white !important; text-decoration: underline !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:hover, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:hover{ text-decoration: none !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:link, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:visited, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:focus, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:active, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:link, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:visited, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:focus, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:active{ text-decoration: none !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:hover, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:hover{ text-decoration: underline !important; } html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output span[typeof="mw:File"], html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output span[typeof="mw:File"] *, html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output figure[typeof="mw:File"], html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output figure[typeof="mw:File"] *{ background-color:transparent !important; color:unset !important; background-color:unset !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output img, html.skin-theme-clientpref-night > body > .mw-page-container .mw-footer-container img{ filter:invert(100%) grayscale(100%) !important; background-color:transparent !important; } html.skin-theme-clientpref-night > body .vector-pinned-container .vector-toc ul.vector-toc-contents li a, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a, html.skin-theme-clientpref-night > body .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a{ z-index:0 !important; position:relative !important; } html.skin-theme-clientpref-night > body .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover, html.skin-theme-clientpref-night > body .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover{ background-color:black !important; color:white !important; border-color:white !important; z-index:1 !important; position:relative !important; } html.skin-theme-clientpref-night > body #mw-content-text > div.printfooter{ z-index:1; position:relative; } html.skin-theme-clientpref-night > body .mw-footer-container, html.skin-theme-clientpref-night > body .mw-footer-container *, html.skin-theme-clientpref-night > body .vector-menu-heading, html.skin-theme-clientpref-night > body .vector-menu-heading *, html.skin-theme-clientpref-night > body > .mw-page-container div.group > div.tool > div.menu, html.skin-theme-clientpref-night > body > .mw-page-container div.group > div.tool > div.menu *{ color:white !important; background-color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body div.uls-rewrite, html.skin-theme-clientpref-night > body div.uls-rewrite *{ color:white !important; background-color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body > div.uls-menu, html.skin-theme-clientpref-night > body > div.uls-menu *, html.skin-theme-clientpref-night > body > .language-settings-dialog, html.skin-theme-clientpref-night > body > .language-settings-dialog *{ color:white !important; background-color:black !important; border-color:white !important; filter:invert(0%); } html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-highlight, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-indent, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-outdent, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-articleSearch, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-settings, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-puzzle, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-reference, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-image, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-link, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-signature, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-italic, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-bold, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-article, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-previous, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-tag, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-check, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-highlight, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-expand, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-first, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-next, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-last, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-search, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-close, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-menu, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-info, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-bookmark, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-ellipsis, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-listBullet, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-listNumbered, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-code, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-noWikiText, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-newline, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-bigger, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-smaller, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-superscript, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-subscript, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-imageGallery, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-articleRedirect, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-table, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-mathematicsDisplayInline, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-mathematicsDisplayBlock, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-helpNotice, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-edit, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-trash, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-pushPin, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-reload{ color: white !important; background-color: unset !important; border-color: white !important; } html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-sortAscending, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-sortDescending, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-pilcrow, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-wrapping, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-check-all, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-gotoLine{ color: white !important; background-color: black !important; border-color: white !important; } html.skin-theme-clientpref-night > body .cdx-button__icon.cm-mw-icon--previous, html.skin-theme-clientpref-night > body .cdx-button__icon.cm-mw-icon--next, html.skin-theme-clientpref-night > body .cdx-icon.cdx-icon--medium.cm-mw-icon--match-case, html.skin-theme-clientpref-night > body .cdx-icon.cdx-icon--medium.cm-mw-icon--regexp, html.skin-theme-clientpref-night > body .cdx-icon.cdx-icon--medium.cm-mw-icon--quotes{ filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-check{ filter:invert(0) grayscale(100%) !important; } html.skin-theme-clientpref-night > body span.vector-icon{ background-color:white !important; } html.skin-theme-clientpref-night > body span.oo-ui-indicatorElement-indicator{ color: white !important; background-color: unset !important; border-color: white !important; } html.skin-theme-clientpref-night > body .mw-tag-wikieditor, html.skin-theme-clientpref-night > body .mw-tag-wikieditor *{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body input.oo-ui-inputWidget-input{ color: white !important; background-color: black !important; border-color: white !important; } html.skin-theme-clientpref-night > body > div.uls-menu .oo-ui-iconElement-icon{ background-color:transparent !important; filter:invert(100%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .uls-sub-panel{ top:0 !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .row .uls-display-settings-tab-switcher, html.skin-theme-clientpref-night > body > .language-settings-dialog .uls-sub-panel{ background-color:transparent !important; border:0 !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .row .uls-display-settings-tab-switcher button, html.skin-theme-clientpref-night > body > .language-settings-dialog .uls-sub-panel button{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .settings-text:hover{ background-color:white!important; color:black !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .settings-text:not(:hover){ background-color:black!important; color:white !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog #languagesettings-settings-panel{ background-color:transparent !important; } html.skin-theme-clientpref-night > body > .vector-header-container #p-vector-user-menu-userpage a{ font-weight:bolder; } html.skin-theme-clientpref-night > body::selection, html.skin-theme-clientpref-night > body *::selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body::-moz-selection html.skin-theme-clientpref-night > body *::-moz-selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body .cm-scroller .cm-line ::selection, html.skin-theme-clientpref-night > body .cm-scroller .cm-line::selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line ::selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line::selection, html.skin-theme-clientpref-night > body .ͼo.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-content ::selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body .cm-scroller .cm-line ::-moz-selection, html.skin-theme-clientpref-night > body .cm-scroller .cm-line::-moz-selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line ::-moz-selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line::-moz-selection, html.skin-theme-clientpref-night > body .ͼo.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-content ::-moz-selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body .ͼo .cm-panels.cm-panels-bottom{ border-top: 1px solid white; } html.skin-theme-clientpref-night > body hr, html.skin-theme-clientpref-night > body > .mw-page-container .cdx-message__icon{ filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body span.ext-discussiontools-init-replylink-buttons, html.skin-theme-clientpref-night > body span.ext-discussiontools-init-replylink-buttons *{ color:white !important; background-color:black !important; border:0 !important; } html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content, html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content *{ color:white; background-color:black; border-color:white; filter:invert(0) grayscale(100%); } html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content .oo-ui-image-success{ background-color:unset; } html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content a{ font-weight:bolder; } html.skin-theme-clientpref-night > body span.link > a, html.skin-theme-clientpref-night > body span.link > a:link, html.skin-theme-clientpref-night > body span.link > a:visited, html.skin-theme-clientpref-night > body span.link > a:hover, html.skin-theme-clientpref-night > body span.link > a:active{ color:white; background-color:black; border-color:none; } html.skin-theme-clientpref-night > body img.mw-logo-icon{ background-color:white; color:black; border-color:black; } html.skin-theme-clientpref-night > body .cdx-checkbox__input:enabled:checked + .cdx-checkbox__icon{ background-color:black; color:white; border-color:white; } html.skin-theme-clientpref-night > body .cdx-button:enabled.cdx-button--weight-quiet:hover{ background-color: gray; mix-blend-mode:unset; } html.skin-theme-clientpref-night > body .uls-language-actions-close, html.skin-theme-clientpref-night > body .uls-settings-block--with-add-languages, html.skin-theme-clientpref-night > body a.mw-logo img, html.skin-theme-clientpref-night > body span.vector-icon img{ filter:invert(100%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body a.mw-logo img.mw-logo-icon{ background-color:white; } html.skin-theme-clientpref-night > body a.mw-logo img.mw-logo-wordmark{ background-color:black; } html.skin-theme-clientpref-night > body a.mw-logo{ background-color:black; } html.skin-theme-clientpref-night > body span.vector-icon{ background-color:white; } html.skin-theme-clientpref-night span.tab > a.skin-invert, html.skin-theme-clientpref-night a.skin-invert.label, html.skin-theme-clientpref-night div.tabs > span > a.skin-invert{ color-scheme:unset !important; filter:none !important; } html.skin-theme-clientpref-night .skin-invert-image img, html.skin-theme-clientpref-night .skin-invert.label::after, html.skin-theme-clientpref-night .skin-invert.current::before, html.skin-theme-clientpref-night .oo-ui-iconElement-icon, html.skin-theme-clientpref-night .oo-ui-indicatorElement-indicator, html.skin-theme-clientpref-night div.tabs > span > a.skin-invert::before, html.skin-theme-clientpref-night label.mw-enhancedchanges-arrow{ color-scheme: light !important; filter: invert(100%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body input[type="radio"], html.skin-theme-clientpref-night > body input[type="checkbox"]{ color-scheme: light !important; filter: invert(1) grayscale(100%) !important; background-color:black; color:white; border-color:white; } html.skin-theme-clientpref-night input[type="radio"] + span.cdx-radio__icon, html.skin-theme-clientpref-night input[type="radio"]:hover + span.cdx-radio__icon{ filter:grayscale(100%) !important; } html.skin-theme-clientpref-night > body .oo-ui-widget, html.skin-theme-clientpref-night > body .oo-ui-widget *{ background-color:black; color:white; border-color:white; filter:invert(0%) grayscale(100%); } div.vector-main-menu > div.mw-portlet > button.uls-settings-trigger, html.skin-theme-clientpref-night > body div#mw-abusefilter-examine-editor, html.skin-theme-clientpref-night > body div#mw-abusefilter-examine-editor *, html.skin-theme-clientpref-night > body div#vector-appearance-pinned-container, html.skin-theme-clientpref-night > body div#vector-appearance-pinned-container *, html.skin-theme-clientpref-night > body div#vector-appearance-unpinned-container, html.skin-theme-clientpref-night > body div#vector-appearance-unpinned-container *, html.skin-theme-clientpref-night > body div.mw-rcfilters-container, html.skin-theme-clientpref-night > body div.mw-rcfilters-container *, html.skin-theme-clientpref-night > body div.mw-rcfilters-ui-rcTopSectionWidget-topLinks-top, html.skin-theme-clientpref-night > body div.mw-rcfilters-ui-rcTopSectionWidget-topLinks-top *{ color: white !important; background-color: unset !important; border-color: white !important; } html.skin-theme-clientpref-night > body > div.mw-page-container > div.mw-page-container-inner .mw-highlight > pre{ position:relative; box-shadow:none; } html.skin-theme-clientpref-night > body .mw-search-form-wrapper, html.skin-theme-clientpref-night > body .mw-search-form-wrapper *{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body .oo-ui-tagItemWidget{ border-radius:unset !important; height:1.7357em !important; } html.skin-theme-clientpref-night > body .oo-ui-fieldLayout-header{ margin-right:0.4em; } html.skin-theme-clientpref-night > body .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button{ background:none !important; } html.skin-theme-clientpref-night > body .mw-advancedSearch-fieldContainer, html.skin-theme-clientpref-night > body .mw-search-form-wrapper .mw-advancedSearch-namespace-selection{ background:none !important; } html.skin-theme-clientpref-night > body .oo-ui-checkboxInputWidget [type="checkbox"]{ margin: 1px; width:1.5em; height:1.5em; } html.skin-theme-clientpref-night > body .cdx-popover, html.skin-theme-clientpref-night > body .cdx-popover *, html.skin-theme-clientpref-night > body div.cdx-dialog{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body div.cdx-dialog{ filter:invert(0%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body .cdx-popover .mw-special-watchlistlabels-onboarding-image{ filter:invert(0%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body #pasek_postępu, html.skin-theme-clientpref-night > body #pasek_postępu *, html.skin-theme-clientpref-night > body .dymkisubst_link_wewnętrzny_komunikatów, html.skin-theme-clientpref-night > body .dymkisubst_link_wewnętrzny_komunikatów *{ background-color:black !important; color:white !important; border-color:white !important; filter:invert(0%) grayscale(100%); } html.skin-theme-clientpref-night > body .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle{ background-color:unset; } html.skin-theme-clientpref-night > body .vector-page-titlebar > .mw-portlet-lang:last-child{ margin-right:0; } } qukcr2j2zkt4828n3zsdi2mae37xn26 556177 556176 2026-09-13T15:01:26Z Persino 2851 556177 css text/css @media screen{ html.skin-theme-clientpref-night > body .vector-dropdown .vector-dropdown-content{ box-shadow:none; border:1px solid white; } html.skin-theme-clientpref-night > body .vector-page-toolbar-container .vector-dropdown{ border-bottom:1px solid black; } html.skin-theme-clientpref-night > body > .vector-header-container, html.skin-theme-clientpref-night > body > .vector-header-container *{ background-color:black; color:white; border-color:white; } html.skin-theme-clientpref-night > body #pt-userpage-2 a:not(.mw-selflink){ color:white; } html.skin-theme-clientpref-night > body > .mw-page-container, html.skin-theme-clientpref-night > body > .mw-page-container > .mw-page-container-inner{ filter:grayscale(100%); } html.skin-theme-clientpref-night > body.action-view td.diff-deletedline .diffchange, html.skin-theme-clientpref-night > body.action-submit td.diff-deletedline .diffchange{ background: var(--background-color-content-removed,#ffe49c); filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body.action-view td.diff-addedline .diffchange, html.skin-theme-clientpref-night > body.action-submit td.diff-addedline .diffchange{ background: var(--background-color-content-added,#a3d3ff); filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body .imeselector, html.skin-theme-clientpref-night > body .imeselector *{ background-color:black !important; color:white !important; border-color:white !important; filter:invert(0) grayscale(100%); } html.skin-theme-clientpref-night > body .imeselector .uls-ime-more-settings-link{ height: calc( 100% - 6px ); } html.skin-theme-clientpref-night > body .uls-ime-menu-settings-item{ padding-bottom:7px; } html.skin-theme-clientpref-night > body, html.skin-theme-clientpref-night > body > .mw-page-container, html.skin-theme-clientpref-night > body > .mw-page-container *{ color:white !important; background-color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink), html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):link, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):visited, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):focus, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):hover, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):active{ color:white !important; background-color:black !important; border-color:white !important; text-decoration: underline !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):hover, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):not(.mw-selflink):hover{ text-decoration: none !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:link, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:visited, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:focus, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:active, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:link, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:visited, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:focus, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:active{ text-decoration: none !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:hover, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:hover{ text-decoration: underline !important; } html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output span[typeof="mw:File"], html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output span[typeof="mw:File"] *, html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output figure[typeof="mw:File"], html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output figure[typeof="mw:File"] *{ background-color:transparent !important; color:unset !important; background-color:unset !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output img, html.skin-theme-clientpref-night > body > .mw-page-container .mw-footer-container img{ filter:invert(100%) grayscale(100%) !important; background-color:transparent !important; } html.skin-theme-clientpref-night > body .vector-pinned-container .vector-toc ul.vector-toc-contents li a, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a, html.skin-theme-clientpref-night > body .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a{ z-index:0 !important; position:relative !important; } html.skin-theme-clientpref-night > body .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover, html.skin-theme-clientpref-night > body .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover{ background-color:black !important; color:white !important; border-color:white !important; z-index:1 !important; position:relative !important; } html.skin-theme-clientpref-night > body #mw-content-text > div.printfooter{ z-index:1; position:relative; } html.skin-theme-clientpref-night > body .mw-footer-container, html.skin-theme-clientpref-night > body .mw-footer-container *, html.skin-theme-clientpref-night > body .vector-menu-heading, html.skin-theme-clientpref-night > body .vector-menu-heading *, html.skin-theme-clientpref-night > body > .mw-page-container div.group > div.tool > div.menu, html.skin-theme-clientpref-night > body > .mw-page-container div.group > div.tool > div.menu *{ color:white !important; background-color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body div.uls-rewrite, html.skin-theme-clientpref-night > body div.uls-rewrite *{ color:white !important; background-color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body > div.uls-menu, html.skin-theme-clientpref-night > body > div.uls-menu *, html.skin-theme-clientpref-night > body > .language-settings-dialog, html.skin-theme-clientpref-night > body > .language-settings-dialog *{ color:white !important; background-color:black !important; border-color:white !important; filter:invert(0%); } html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-highlight, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-indent, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-outdent, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-articleSearch, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-settings, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-puzzle, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-reference, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-image, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-link, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-signature, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-italic, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-bold, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-article, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-previous, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-tag, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-check, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-highlight, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-expand, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-first, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-next, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-last, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-search, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-close, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-menu, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-info, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-bookmark, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-ellipsis, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-listBullet, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-listNumbered, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-code, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-noWikiText, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-newline, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-bigger, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-smaller, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-superscript, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-subscript, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-imageGallery, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-articleRedirect, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-table, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-mathematicsDisplayInline, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-mathematicsDisplayBlock, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-helpNotice, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-edit, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-trash, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-pushPin, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-reload{ color: white !important; background-color: unset !important; border-color: white !important; } html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-sortAscending, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-sortDescending, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-pilcrow, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-wrapping, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-check-all, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-gotoLine{ color: white !important; background-color: black !important; border-color: white !important; } html.skin-theme-clientpref-night > body .cdx-button__icon.cm-mw-icon--previous, html.skin-theme-clientpref-night > body .cdx-button__icon.cm-mw-icon--next, html.skin-theme-clientpref-night > body .cdx-icon.cdx-icon--medium.cm-mw-icon--match-case, html.skin-theme-clientpref-night > body .cdx-icon.cdx-icon--medium.cm-mw-icon--regexp, html.skin-theme-clientpref-night > body .cdx-icon.cdx-icon--medium.cm-mw-icon--quotes{ filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-check{ filter:invert(0) grayscale(100%) !important; } html.skin-theme-clientpref-night > body span.vector-icon{ background-color:white !important; } html.skin-theme-clientpref-night > body span.oo-ui-indicatorElement-indicator{ color: white !important; background-color: unset !important; border-color: white !important; } html.skin-theme-clientpref-night > body .mw-tag-wikieditor, html.skin-theme-clientpref-night > body .mw-tag-wikieditor *{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body input.oo-ui-inputWidget-input{ color: white !important; background-color: black !important; border-color: white !important; } html.skin-theme-clientpref-night > body > div.uls-menu .oo-ui-iconElement-icon{ background-color:transparent !important; filter:invert(100%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .uls-sub-panel{ top:0 !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .row .uls-display-settings-tab-switcher, html.skin-theme-clientpref-night > body > .language-settings-dialog .uls-sub-panel{ background-color:transparent !important; border:0 !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .row .uls-display-settings-tab-switcher button, html.skin-theme-clientpref-night > body > .language-settings-dialog .uls-sub-panel button{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .settings-text:hover{ background-color:white!important; color:black !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .settings-text:not(:hover){ background-color:black!important; color:white !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog #languagesettings-settings-panel{ background-color:transparent !important; } html.skin-theme-clientpref-night > body > .vector-header-container #p-vector-user-menu-userpage a{ font-weight:bolder; } html.skin-theme-clientpref-night > body::selection, html.skin-theme-clientpref-night > body *::selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body::-moz-selection html.skin-theme-clientpref-night > body *::-moz-selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body .cm-scroller .cm-line ::selection, html.skin-theme-clientpref-night > body .cm-scroller .cm-line::selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line ::selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line::selection, html.skin-theme-clientpref-night > body .ͼo.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-content ::selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body .cm-scroller .cm-line ::-moz-selection, html.skin-theme-clientpref-night > body .cm-scroller .cm-line::-moz-selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line ::-moz-selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line::-moz-selection, html.skin-theme-clientpref-night > body .ͼo.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-content ::-moz-selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body .ͼo .cm-panels.cm-panels-bottom{ border-top: 1px solid white; } html.skin-theme-clientpref-night > body hr, html.skin-theme-clientpref-night > body > .mw-page-container .cdx-message__icon{ filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body span.ext-discussiontools-init-replylink-buttons, html.skin-theme-clientpref-night > body span.ext-discussiontools-init-replylink-buttons *{ color:white !important; background-color:black !important; border:0 !important; } html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content, html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content *{ color:white; background-color:black; border-color:white; filter:invert(0) grayscale(100%); } html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content .oo-ui-image-success{ background-color:unset; } html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content a{ font-weight:bolder; } html.skin-theme-clientpref-night > body span.link > a, html.skin-theme-clientpref-night > body span.link > a:link, html.skin-theme-clientpref-night > body span.link > a:visited, html.skin-theme-clientpref-night > body span.link > a:hover, html.skin-theme-clientpref-night > body span.link > a:active{ color:white; background-color:black; border-color:none; } html.skin-theme-clientpref-night > body img.mw-logo-icon{ background-color:white; color:black; border-color:black; } html.skin-theme-clientpref-night > body .cdx-checkbox__input:enabled:checked + .cdx-checkbox__icon{ background-color:black; color:white; border-color:white; } html.skin-theme-clientpref-night > body .cdx-button:enabled.cdx-button--weight-quiet:hover{ background-color: gray; mix-blend-mode:unset; } html.skin-theme-clientpref-night > body .uls-language-actions-close, html.skin-theme-clientpref-night > body .uls-settings-block--with-add-languages, html.skin-theme-clientpref-night > body a.mw-logo img, html.skin-theme-clientpref-night > body span.vector-icon img{ filter:invert(100%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body a.mw-logo img.mw-logo-icon{ background-color:white; } html.skin-theme-clientpref-night > body a.mw-logo img.mw-logo-wordmark{ background-color:black; } html.skin-theme-clientpref-night > body a.mw-logo{ background-color:black; } html.skin-theme-clientpref-night > body span.vector-icon{ background-color:white; } html.skin-theme-clientpref-night span.tab > a.skin-invert, html.skin-theme-clientpref-night a.skin-invert.label, html.skin-theme-clientpref-night div.tabs > span > a.skin-invert{ color-scheme:unset !important; filter:none !important; } html.skin-theme-clientpref-night .skin-invert-image img, html.skin-theme-clientpref-night .skin-invert.label::after, html.skin-theme-clientpref-night .skin-invert.current::before, html.skin-theme-clientpref-night .oo-ui-iconElement-icon, html.skin-theme-clientpref-night .oo-ui-indicatorElement-indicator, html.skin-theme-clientpref-night div.tabs > span > a.skin-invert::before, html.skin-theme-clientpref-night label.mw-enhancedchanges-arrow{ color-scheme: light !important; filter: invert(100%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body input[type="radio"], html.skin-theme-clientpref-night > body input[type="checkbox"]{ color-scheme: light !important; filter: invert(1) grayscale(100%) !important; background-color:black; color:white; border-color:white; } html.skin-theme-clientpref-night input[type="radio"] + span.cdx-radio__icon, html.skin-theme-clientpref-night input[type="radio"]:hover + span.cdx-radio__icon{ filter:grayscale(100%) !important; } html.skin-theme-clientpref-night > body .oo-ui-widget, html.skin-theme-clientpref-night > body .oo-ui-widget *{ background-color:black; color:white; border-color:white; filter:invert(0%) grayscale(100%); } div.vector-main-menu > div.mw-portlet > button.uls-settings-trigger, html.skin-theme-clientpref-night > body div#mw-abusefilter-examine-editor, html.skin-theme-clientpref-night > body div#mw-abusefilter-examine-editor *, html.skin-theme-clientpref-night > body div#vector-appearance-pinned-container, html.skin-theme-clientpref-night > body div#vector-appearance-pinned-container *, html.skin-theme-clientpref-night > body div#vector-appearance-unpinned-container, html.skin-theme-clientpref-night > body div#vector-appearance-unpinned-container *, html.skin-theme-clientpref-night > body div.mw-rcfilters-container, html.skin-theme-clientpref-night > body div.mw-rcfilters-container *, html.skin-theme-clientpref-night > body div.mw-rcfilters-ui-rcTopSectionWidget-topLinks-top, html.skin-theme-clientpref-night > body div.mw-rcfilters-ui-rcTopSectionWidget-topLinks-top *{ color: white !important; background-color: unset !important; border-color: white !important; } html.skin-theme-clientpref-night > body > div.mw-page-container > div.mw-page-container-inner .mw-highlight > pre{ position:relative; box-shadow:none; } html.skin-theme-clientpref-night > body .mw-search-form-wrapper, html.skin-theme-clientpref-night > body .mw-search-form-wrapper *{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body .oo-ui-tagItemWidget{ border-radius:unset !important; height:1.7357em !important; } html.skin-theme-clientpref-night > body .oo-ui-fieldLayout-header{ margin-right:0.4em; } html.skin-theme-clientpref-night > body .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button{ background:none !important; } html.skin-theme-clientpref-night > body .mw-advancedSearch-fieldContainer, html.skin-theme-clientpref-night > body .mw-search-form-wrapper .mw-advancedSearch-namespace-selection{ background:none !important; } html.skin-theme-clientpref-night > body .oo-ui-checkboxInputWidget [type="checkbox"]{ margin: 1px; width:1.5em; height:1.5em; } html.skin-theme-clientpref-night > body .cdx-popover, html.skin-theme-clientpref-night > body .cdx-popover *, html.skin-theme-clientpref-night > body div.cdx-dialog{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body div.cdx-dialog{ filter:invert(0%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body .cdx-popover .mw-special-watchlistlabels-onboarding-image{ filter:invert(0%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body #pasek_postępu, html.skin-theme-clientpref-night > body #pasek_postępu *, html.skin-theme-clientpref-night > body .dymkisubst_link_wewnętrzny_komunikatów, html.skin-theme-clientpref-night > body .dymkisubst_link_wewnętrzny_komunikatów *{ background-color:black !important; color:white !important; border-color:white !important; filter:invert(0%) grayscale(100%); } html.skin-theme-clientpref-night > body .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle{ background-color:unset; } html.skin-theme-clientpref-night > body .vector-page-titlebar > .mw-portlet-lang:last-child{ margin-right:0; } } ew8rko1pjm8eta48ifslalrkmc1kcm4 Szablon:OpisParametrów 10 64146 556179 555727 2026-09-13T15:48:28Z Persino 2851 556179 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |+ <div class="OpisParametrów-tytuł">Parametry szablonu lub funkcji</div> |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- <!-- -->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}<!-- -->class{{=}}"OpisParametrów-nagłówek {{(((}}___{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!-- -->{{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}}<!-- -->{{))}} <!-- -->{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> a6a2unk09d47myh0xxxwh7rf8bhtiyh 556186 556179 2026-09-13T15:58:54Z Persino 2851 556186 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |+ <div class="OpisParametrów-tytuł">Parametry szablonu lub ramki, bądź funkcji bibliotecznej</div> |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- <!-- -->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}<!-- -->class{{=}}"OpisParametrów-nagłówek {{(((}}___{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!-- -->{{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}}<!-- -->{{))}} <!-- -->{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> apzujm33xn7mea1g3t5q8684txubm9t 556187 556186 2026-09-13T16:00:01Z Persino 2851 556187 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |+ <div class="OpisParametrów-tytuł">Parametry szablonu lub ramki, bądź funkcji bibliotecznej.</div> |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- <!-- -->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}<!-- -->class{{=}}"OpisParametrów-nagłówek {{(((}}___{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!-- -->{{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}}<!-- -->{{))}} <!-- -->{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 0jr3rnsu6nffunh478wvzopmsbexhrg 556201 556187 2026-09-13T17:07:51Z Persino 2851 556201 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |+ <div class="OpisParametrów-tytuł">Parametry szablonu lub ramki, bądź funkcji bibliotecznej.</div> |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- <!-- -->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}<!-- -->class{{=}}"OpisParametrów-{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}nagłówek{{!}}komórka{{))}} {{(((}}___{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!-- -->{{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}}<!-- -->{{))}} <!-- -->{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};komórka{{((}}_{{))}}{{!}}komórka{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};nagłówek{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}};komórka{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> sj6e5uzhr0uemp95zn1x3wfj8uxl30q 556202 556201 2026-09-13T17:09:09Z Persino 2851 556202 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |+ <div class="OpisParametrów-tytuł">Parametry szablonu lub ramki, bądź funkcji bibliotecznej.</div> |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- <!-- -->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}<!-- -->class{{=}}"OpisParametrów-{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}nagłówek{{!}}komórka{{))}} {{(((}}___{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!-- -->{{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}}<!-- -->{{))}} <!-- -->{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};komórka{{((}}_{{))}}{{!}}komórka{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};nagłówek{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}};komórka{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> jb9lm7ea9cvroopeqhfd9vlh3bxdgwg 556204 556202 2026-09-13T17:10:39Z Persino 2851 556204 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |+ <div class="OpisParametrów-tytuł">Parametry szablonu lub ramki, bądź funkcji bibliotecznej.</div> |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- <!-- -->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}<!-- -->class{{=}}"OpisParametrów-{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}nagłówek{{!}}komórka{{))}} {{(((}}___{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!-- -->{{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}}<!-- -->{{))}} <!-- -->{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};komórka{{((}}_{{))}}{{!}}komórka{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};nagłówek{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}};komórka{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> hjuko2lfplmcd0ez06hy4svpvxauoqt 556254 556204 2026-09-14T08:19:44Z Persino 2851 556254 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}}<!-- |+ <div class="OpisParametrów-tytuł">Parametry szablonu lub ramki, bądź funkcji bibliotecznej.</div>--> |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- <!-- -->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}<!-- -->class{{=}}"OpisParametrów-{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}nagłówek{{!}}komórka{{))}} {{(((}}___{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!-- -->{{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}}<!-- -->{{))}} <!-- -->{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};komórka{{((}}_{{))}}{{!}}komórka{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};nagłówek{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}};komórka{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> ir1texu97noe4ff9ykhr7opcczcj34g 556263 556254 2026-09-14T09:55:50Z Persino 2851 556263 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}}<!-- |+ <div class="OpisParametrów-tytuł">Parametry szablonu lub ramki, bądź funkcji bibliotecznej.</div>--> |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- <!-- -->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}<!-- -->class{{=}}"OpisParametrów-{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}nagłówek{{!}}komórka{{))}} {{(((}}___{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!-- -->{{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}}<!-- -->{{))}} <!-- -->{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> {{#if:{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}{{((}}!{{))}}{{!}}!{{))}} {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};komórka{{((}}_{{))}}{{!}}komórka{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};nagłówek{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}};komórka{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> c7h6waf0atgu7hck17839e6w4wk08yn 556264 556263 2026-09-14T09:56:59Z Persino 2851 556264 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}}<!-- |+ <div class="OpisParametrów-tytuł">Parametry szablonu lub ramki, bądź funkcji bibliotecznej.</div>--> |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- <!-- -->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}<!-- -->class{{=}}"OpisParametrów-{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}nagłówek{{!}}komórka{{))}} {{(((}}___{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!-- -->{{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}}<!-- -->{{))}} <!-- -->{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> {{((}}#if:{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}{{((}}!{{))}}{{!}}!{{))}} {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};komórka{{((}}_{{))}}{{!}}komórka{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};nagłówek{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}};komórka{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> i6ust05caxnh37rwsy7ftif4no5xdfg Szablon:OpisParametrów/styles.css 10 64147 556178 555711 2026-09-13T15:05:09Z Persino 2851 556178 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a:hover, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a:hover{ text-decoration:none; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ qviqie4ixnbx7vy58ty71l4xuf365yw 556180 556178 2026-09-13T15:49:57Z Persino 2851 556180 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:column; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a:hover, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a:hover{ text-decoration:none; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 6nxeqs9b56xhue7zr6mw5lnyzjlkjw7 556181 556180 2026-09-13T15:52:21Z Persino 2851 556181 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; flex-wrap:wrap; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a:hover, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a:hover{ text-decoration:none; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > caption{ display:block; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 0f37rpnyfh263wcq0o03m5fe87nlc92 556182 556181 2026-09-13T15:53:46Z Persino 2851 556182 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; flex-wrap:wrap; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > caption{ display:block; width:100%; padding:0.5em; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a:hover, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a:hover{ text-decoration:none; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 3uc0jnmuj6rw819suuht41ax0nqd8f7 556183 556182 2026-09-13T15:56:19Z Persino 2851 556183 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; flex-wrap:wrap; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > caption{ display:block; width:100%; padding:0.5em; border:1px solid var(--border-color-base,#a2a9b1); } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a:hover, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a:hover{ text-decoration:none; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ ahefy357p5y53j5ybli4limjnzfsodo 556184 556183 2026-09-13T15:57:08Z Persino 2851 556184 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; flex-wrap:wrap; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > caption{ display:block; width:100%; padding:0.2em; border:1px solid var(--border-color-base,#a2a9b1); } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a:hover, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a:hover{ text-decoration:none; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ maj481ghz8feka9q305ctszesqcy50t 556185 556184 2026-09-13T15:57:35Z Persino 2851 556185 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; flex-wrap:wrap; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > caption{ display:block; width:100%; padding:0.2em; border:1px solid var(--border-color-base,#a2a9b1); border-bottom:0; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a:hover, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a:hover{ text-decoration:none; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ tnu0fc6f99ub3b7ub3j381qttt1ar3j 556188 556185 2026-09-13T16:03:50Z Persino 2851 556188 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; flex-wrap:wrap; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > caption{ display:block; width:100%; padding:0; margin:0; border:1px solid var(--border-color-base,#a2a9b1); border-bottom:0; } table.OpisParametrów > caption > div.OpisParametrów-tytuł{ margin:0; padding:0.2em; box-sizing:border-box; width:100%; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a:hover, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a:hover{ text-decoration:none; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 1d4lb61jlkb33ehnve0uo5egb3nneu3 556253 556188 2026-09-14T08:19:08Z Persino 2851 556253 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; flex-wrap:wrap; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody{ display:table; width:100%; } /* table.OpisParametrów > caption{ display:block; width:100%; padding:0; margin:0; border:1px solid var(--border-color-base,#a2a9b1); border-bottom:0; } table.OpisParametrów > caption > div.OpisParametrów-tytuł{ margin:0; padding:0.2em; box-sizing:border-box; width:100%; } */ table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a:hover, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a:hover{ text-decoration:none; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ px4tbdu8unn4trip79n2f3phcple758 556265 556253 2026-09-14T10:11:32Z Persino 2851 556265 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; flex-wrap:wrap; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody{ display:table; width:100%; } /* table.OpisParametrów > caption{ display:block; width:100%; padding:0; margin:0; border:1px solid var(--border-color-base,#a2a9b1); border-bottom:0; } table.OpisParametrów > caption > div.OpisParametrów-tytuł{ margin:0; padding:0.2em; box-sizing:border-box; width:100%; } */ table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th a:hover, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a:hover{ text-decoration:none; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):not(.OpisParametrów-komórka):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):not(.OpisParametrów-komórka):last-child > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ l2onizsrabfu6jrxkg7wmtuueeoe3eg Moduł:Liczby 828 64295 556166 2026-09-13T13:57:43Z Persino 2851 Utworzono nową stronę „local p={}; p.LiczbaSzesnastkowaOdStandardowegoPrzedstawienia=function(liczba,podstawa) podstawa=podstawa or 16; liczba=tonumber(liczba) or liczba; local tab_zebrane_reszty={}; while(true)do local liczba_nowa_rzeczywista=liczba/podstawa; local liczba_podloga=math.floor(liczba_nowa_rzeczywista); local reszta=liczba-(liczba_podloga*podstawa); table.insert(tab_zebrane_reszty,reszta); if(liczba_podloga==0)then break;end; liczba=liczba_podloga; end;…” 556166 Scribunto text/plain local p={}; p.LiczbaSzesnastkowaOdStandardowegoPrzedstawienia=function(liczba,podstawa) podstawa=podstawa or 16; liczba=tonumber(liczba) or liczba; local tab_zebrane_reszty={}; while(true)do local liczba_nowa_rzeczywista=liczba/podstawa; local liczba_podloga=math.floor(liczba_nowa_rzeczywista); local reszta=liczba-(liczba_podloga*podstawa); table.insert(tab_zebrane_reszty,reszta); if(liczba_podloga==0)then break;end; liczba=liczba_podloga; end; local tab_liczba={}; for i=#tab_zebrane_reszty,1,-1 do table.insert(tab_liczba,tab_zebrane_reszty[i]); end; return table.concat(tab_liczba); end; p.LiczbaSzesnastkowaKodyBazySzablonowe=function(liczba) liczba=p.LiczbaSzesnastkowaOdStandardowegoPrzedstawienia(liczba,16); if(#liczba>=8)then return liczba;end; liczba=mw.ustring.rep("0",math.max(8-#liczba,0))..liczba; return liczba; end; return p; nkfymhghwbjywsjxxtz02gj1lep6ona 556169 556166 2026-09-13T14:12:24Z Persino 2851 556169 Scribunto text/plain local p={}; p.LiczbaSzesnastkowaOdStandardowegoPrzedstawienia=function(liczba,podstawa) podstawa=podstawa or 16; liczba=tonumber(liczba) or liczba; local tab_zebrane_reszty={}; while(true)do local liczba_nowa_rzeczywista=liczba/podstawa; local liczba_podloga=math.floor(liczba_nowa_rzeczywista); local reszta=liczba-(liczba_podloga*podstawa); table.insert(tab_zebrane_reszty,reszta); if(liczba_podloga==0)then break;end; liczba=liczba_podloga; end; local tab_liczba={}; local liczby_dane_modul=mw.loadData("Module:StronicowyParser/dane"); local tablica_znaki_liczbowe=liczby_dane_modul.tablica_znaki_liczbowe; for i=#tab_zebrane_reszty,1,-1 do local reszta=tab_zebrane_reszty[i]; local znak=tablica_znaki_liczbowe[reszta] or reszta; table.insert(tab_liczba,znak); end; return table.concat(tab_liczba); end; p.LiczbaSzesnastkowaKodyBazySzablonowe=function(liczba) liczba=p.LiczbaSzesnastkowaOdStandardowegoPrzedstawienia(liczba,16); if(#liczba>=8)then return liczba;end; liczba=mw.ustring.rep("0",math.max(8-#liczba,0))..liczba; return liczba; end; return p; hydg9bzi4mwyl49d5e32o8he35611g2 556170 556169 2026-09-13T14:13:32Z Persino 2851 556170 Scribunto text/plain local p={}; p.LiczbaSzesnastkowaOdStandardowegoPrzedstawienia=function(liczba,podstawa) podstawa=podstawa or 16; liczba=tonumber(liczba) or liczba; local tab_zebrane_reszty={}; while(true)do local liczba_nowa_rzeczywista=liczba/podstawa; local liczba_podloga=math.floor(liczba_nowa_rzeczywista); local reszta=liczba-(liczba_podloga*podstawa); table.insert(tab_zebrane_reszty,reszta); if(liczba_podloga==0)then break;end; liczba=liczba_podloga; end; local tab_liczba={}; local liczby_dane_modul=mw.loadData("Module:Liczby/dane"); local tablica_znaki_liczbowe=liczby_dane_modul.tablica_znaki_liczbowe; for i=#tab_zebrane_reszty,1,-1 do local reszta=tab_zebrane_reszty[i]; local znak=tablica_znaki_liczbowe[reszta] or reszta; table.insert(tab_liczba,znak); end; return table.concat(tab_liczba); end; p.LiczbaSzesnastkowaKodyBazySzablonowe=function(liczba) liczba=p.LiczbaSzesnastkowaOdStandardowegoPrzedstawienia(liczba,16); if(#liczba>=8)then return liczba;end; liczba=mw.ustring.rep("0",math.max(8-#liczba,0))..liczba; return liczba; end; return p; c3tpeyi67f68vusa1tcl8r17i1ka03h 556173 556170 2026-09-13T14:24:11Z Persino 2851 556173 Scribunto text/plain local p={}; p.LiczbaSzesnastkowaOdStandardowegoPrzedstawienia=function(liczba,podstawa) podstawa=podstawa or 16; liczba=tonumber(liczba) or liczba; local tab_zebrane_reszty={}; while(true)do local liczba_nowa_rzeczywista=liczba/podstawa; local liczba_podloga=math.floor(liczba_nowa_rzeczywista); local reszta=liczba-(liczba_podloga*podstawa); table.insert(tab_zebrane_reszty,reszta); if(liczba_podloga==0)then break;end; liczba=liczba_podloga; end; local tab_liczba={}; local liczby_dane_modul=mw.loadData("Module:Liczby/dane"); local tablica_znaki_liczbowe=liczby_dane_modul.tablica_znaki_liczbowe; for i=#tab_zebrane_reszty,1,-1 do local reszta=tab_zebrane_reszty[i]; local znak=tablica_znaki_liczbowe[reszta] or reszta; table.insert(tab_liczba,znak); end; return table.concat(tab_liczba,""); end; p.LiczbaSzesnastkowaKodyBazySzablonowe=function(liczba) liczba=p.LiczbaSzesnastkowaOdStandardowegoPrzedstawienia(liczba,16); if(#liczba>=8)then return liczba;end; liczba=mw.ustring.rep("0",math.max(8-#liczba,0))..liczba; return liczba; end; return p; 9tno9mnj6p4ezvvz3e100e4qfy5ipry Moduł:Liczby/dane 828 64296 556167 2026-09-13T14:08:03Z Persino 2851 Utworzono nową stronę „local p={}; p.znaki_liczbowe={ [0]="0", [1]="1", [2]="2", [3]="3", [4]="4", [5]="5", [6]="6", [7]="7", [8]="8", [9]="9", [10]="A", [11]="B", [12]="C", [13]="D", [14]="E", [15]="F", [16]="G", [17]="H", [18]="I", [19]="J", [20]="K", [21]="L", [22]="M", [23]="N", [24]="O", [25]="P", [26]="Q", [27]="R", [28]="S", [29]="T", [30]="U", [31]="V", [32]="W", [33]="X", [34]="Y", [35]="Z", }; return p;” 556167 Scribunto text/plain local p={}; p.znaki_liczbowe={ [0]="0", [1]="1", [2]="2", [3]="3", [4]="4", [5]="5", [6]="6", [7]="7", [8]="8", [9]="9", [10]="A", [11]="B", [12]="C", [13]="D", [14]="E", [15]="F", [16]="G", [17]="H", [18]="I", [19]="J", [20]="K", [21]="L", [22]="M", [23]="N", [24]="O", [25]="P", [26]="Q", [27]="R", [28]="S", [29]="T", [30]="U", [31]="V", [32]="W", [33]="X", [34]="Y", [35]="Z", }; return p; 5s3o3efu57m7zxmourevdnd1s4m2ag7 556168 556167 2026-09-13T14:09:51Z Persino 2851 556168 Scribunto text/plain local p={}; p.tablica_znaki_liczbowe={ [0]="0", [1]="1", [2]="2", [3]="3", [4]="4", [5]="5", [6]="6", [7]="7", [8]="8", [9]="9", [10]="A", [11]="B", [12]="C", [13]="D", [14]="E", [15]="F", [16]="G", [17]="H", [18]="I", [19]="J", [20]="K", [21]="L", [22]="M", [23]="N", [24]="O", [25]="P", [26]="Q", [27]="R", [28]="S", [29]="T", [30]="U", [31]="V", [32]="W", [33]="X", [34]="Y", [35]="Z", }; return p; nvymhzbcoqisht7eexyq8k3i3vqtexw Szablon:StronaStart/heading.css 10 64297 556230 2026-09-13T19:40:04Z Persino 2851 Utworzono nową stronę „.ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona…” 556230 sanitized-css text/css .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } aw2h06ybsvikwnqepdactih99d0aj1h 556237 556230 2026-09-13T19:58:15Z Persino 2851 556237 sanitized-css text/css .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ bps5m6uj44rzefb2xnl477q59uilji4 556246 556237 2026-09-13T20:30:52Z Persino 2851 556246 sanitized-css text/css .ciało_strona mw-html-heading, .ciało_strona .mw-heading{ text-align:left; } .ciało_strona h1.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading1 h1, .ciało_strona div.mw-heading.mw-heading1 h1 code, /**/ .ciało_strona h2.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading2 h2, .ciało_strona div.mw-heading.mw-heading2 h2 code, /**/ .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 h4 code, /**/ .ciało_strona h5.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading5 h5, .ciało_strona div.mw-heading.mw-heading5 h5 code, /**/ .ciało_strona h6.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading6 h6, .ciało_strona div.mw-heading.mw-heading6 h6 code{ font-size:unset; line-height:unset; } .ciało_strona h1.mw-html-heading, .ciało_strona div.mw-heading.mw-heading1{ font-size:1.6em; } .ciało_strona h2.mw-html-heading, div.mw-heading.mw-heading2{ font-size:1.5em; } .ciało_strona h3.mw-html-heading, .ciało_strona div.mw-heading.mw-heading3{ font-size:1.4em } .ciało_strona h4.mw-html-heading, .ciało_strona div.mw-heading.mw-heading4{ font-size:1.3em; } .ciało_strona h5.mw-html-heading, .ciało_strona div.mw-heading.mw-heading5{ font-size:1.2em; } .ciało_strona h6.mw-html-heading:not(.mw-hnumber), .ciało_strona div.mw-heading.mw-heading6{ font-size:1.1em; } .ciało_strona h6.mw-html-heading.mw-hnumber{ font-size:0.4em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-7{ font-size:1.0em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-8{ font-size:0.9em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-9{ font-size:0.8em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-10{ font-size:0.7em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-11{ font-size:0.6em; } .ciało_strona h6.mw-html-heading.mw-hnumber.mw-hnumber-12{ font-size:0.5em; } .ciało_strona h3.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading3 h3, .ciało_strona div.mw-heading.mw-heading3 > span, .ciało_strona div.mw-heading.mw-heading3 h3 code, /**/ .ciało_strona h4.mw-html-heading code, .ciało_strona div.mw-heading.mw-heading4 h4, .ciało_strona div.mw-heading.mw-heading4 > span, .ciało_strona div.mw-heading.mw-heading4 h4 code{ font-weight:normal; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ .ciało_strona .mw-heading{ display:block; text-align:left; } .ciało_strona .mw-heading > *{ display:inline; } .ciało_strona .mw-heading > .mw-editsection{ display:inline-flex; margin-left:1em; font-size:small; margin-right:0; vertical-align:middle; } body.skin--responsive.skin-minerva .ciało_strona .mw-heading > .mw-editsection{ margin-left:0.3em; } .ciało_strona .mw-heading > .numeracja{ margin-top: 0; margin-bottom: auto; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ 1qeio5pm6hz3uqng6ekgf5yyr6ktz1d Szablon:StronaStart/styl-strony.css 10 64298 556233 2026-09-13T19:54:33Z Persino 2851 Utworzono nową stronę „.ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-widt…” 556233 sanitized-css text/css .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .strona_start .ciało_strona p, .strona_start .ciało_strona dl{ margin-bottom:0.1em; } .strona_start .ciało_strona p + p{ margin-top:0.4em; } .strona_start .ciało_strona p+dl{ margin-top:0.1em; } .strona_start .ciało_strona p + ol, .strona_start .ciało_strona p + ul{ margin-top:0.1em; } .strona_start .ciało_strona table{ margin-bottom:0.5em; } .strona_start .ciało_strona table + dl{ margin-top:1em; } .strona_start .ciało_strona dl + div.mw-highlight, .strona_start .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } .strona_start p{ margin: 0.4em 0 0.5em 0; } gsqkthg3o4sxbqqkesx83ga6gyhjpoe 556234 556233 2026-09-13T19:55:24Z Persino 2851 556234 sanitized-css text/css .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } .ciało_strona p + p{ margin-top:0.4em; } .ciało_strona p+dl{ margin-top:0.1em; } .ciało_strona p + ol, .ciało_strona p + ul{ margin-top:0.1em; } .ciało_strona table{ margin-bottom:0.5em; } .ciało_strona table + dl{ margin-top:1em; } .ciało_strona dl + div.mw-highlight, .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } .strona_start p{ margin: 0.4em 0 0.5em 0; } mg1k89zz7cahkj27zt2iodwq0vu2sxh 556236 556234 2026-09-13T19:57:33Z Persino 2851 556236 sanitized-css text/css .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } .ciało_strona p + p{ margin-top:0.4em; } .ciało_strona p+dl{ margin-top:0.1em; } .ciało_strona p + ol, .ciało_strona p + ul{ margin-top:0.1em; } .ciało_strona table{ margin-bottom:0.5em; } .ciało_strona table + dl{ margin-top:1em; } .ciało_strona dl + div.mw-highlight, .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } .strona_start p{ margin: 0.4em 0 0.5em 0; } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ e0urpov1e1x80ygf8kvjx97wkc74d24 556239 556236 2026-09-13T20:01:56Z Persino 2851 556239 sanitized-css text/css .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } .ciało_strona p + p{ margin-top:0.4em; } .ciało_strona p+dl{ margin-top:0.1em; } .ciało_strona p + ol, .ciało_strona p + ul{ margin-top:0.1em; } .ciało_strona table{ margin-bottom:0.5em; } .ciało_strona table + dl{ margin-top:1em; } .ciało_strona dl + div.mw-highlight, .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } .ciało_strona p{ margin: 0.4em 0 0.5em 0; } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ m7zj5lsiwx64rt6jw8vfv2wcjm336t9 556240 556239 2026-09-13T20:14:49Z Persino 2851 556240 sanitized-css text/css .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .ciało_strona .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } .ciało_strona p + p{ margin-top:0.4em; } .ciało_strona p+dl{ margin-top:0.1em; } .ciało_strona p + ol, .ciało_strona p + ul{ margin-top:0.1em; } .ciało_strona table{ margin-bottom:0.5em; } .ciało_strona table + dl{ margin-top:1em; } .ciało_strona dl + div.mw-highlight, .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } .ciało_strona p{ margin: 0.4em 0 0.5em 0; } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ jr5szwi2mehetu50p9uojjtqxjd0cka 556241 556240 2026-09-13T20:16:15Z Persino 2851 556241 sanitized-css text/css .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .ciało_strona .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p{ margin: 0.4em 0 0.5em 0; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } .ciało_strona p + p{ margin-top:0.4em; } .ciało_strona p+dl{ margin-top:0.1em; } .ciało_strona p + ol, .ciało_strona p + ul{ margin-top:0.1em; } .ciało_strona table{ margin-bottom:0.5em; } .ciało_strona table + dl{ margin-top:1em; } .ciało_strona dl + div.mw-highlight, .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ omba3h028jjsa7d6zeeeug1fkin1f1z 556244 556241 2026-09-13T20:27:29Z Persino 2851 556244 sanitized-css text/css .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .ciało_strona .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p{ margin: 0.4em 0 0.5em 0; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } .ciało_strona p + p{ margin-top:0.4em; } .ciało_strona p+dl{ margin-top:0.1em; } .ciało_strona p + ol, .ciało_strona p + ul{ margin-top:0.1em; } .ciało_strona table{ margin-bottom:0.5em; } .ciało_strona table + dl{ margin-top:1em; } .ciało_strona dl + div.mw-highlight, .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ scvag7zgkfhijvsr6xg9o63r686ufef 556248 556244 2026-09-13T20:41:10Z Persino 2851 556248 sanitized-css text/css .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .ciało_strona .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p{ margin: 0.4em 0 0.5em 0; font-size: inherit; line-height: 1.3; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } .ciało_strona p + p{ margin-top:0.4em; } .ciało_strona p+dl{ margin-top:0.1em; } .ciało_strona p + ol, .ciało_strona p + ul{ margin-top:0.1em; } .ciało_strona table{ margin-bottom:0.5em; } .ciało_strona table + dl{ margin-top:1em; } .ciało_strona dl + div.mw-highlight, .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ 0xzsqw7zxpvvwneodlem8jux19hfe2b 556250 556248 2026-09-13T20:44:39Z Persino 2851 556250 sanitized-css text/css .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .ciało_strona .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p{ margin: 0.4em 0 0.5em 0; font-size: inherit; line-height: 1.3; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } .ciało_strona p + p{ margin-top:0.4em; } .ciało_strona p+dl{ margin-top:0.1em; } .ciało_strona p + ol, .ciało_strona p + ul{ margin-top:0.1em; } .ciało_strona table{ margin-bottom:0.5em; } .ciało_strona table + dl{ margin-top:1em; } .ciało_strona dl + div.mw-highlight, .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } .ciało_strona > :not(style):not(link):not(p).floatleft + p, .ciało_strona > :not(style):not(link):not(p).floatright + p, .ciało_strona > :not(style):not(link):not(p).tleft + p, .ciało_strona > :not(style):not(link):not(p).tright + p, .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .ciało_strona > figure.mw-halign-left + p, .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ o7dt7avsg7bisk2ii5kyk1qk7xldsk6